Initial revision
authormtopper <mtopper>
Wed, 18 May 2005 15:01:18 +0000 (15:01 +0000)
committermtopper <mtopper>
Wed, 18 May 2005 15:01:18 +0000 (15:01 +0000)
79 files changed:
etc/bundles/adminlocal.properties [new file with mode: 0755]
etc/bundles/open_ay.properties [new file with mode: 0755]
etc/bundles/open_de.properties [new file with mode: 0755]
etc/bundles/open_en.properties [new file with mode: 0755]
etc/bundles/open_es.properties [new file with mode: 0755]
etc/bundles/open_gn.properties [new file with mode: 0755]
etc/bundles/open_qu.properties [new file with mode: 0755]
etc/bundles/producer_ay.properties [new file with mode: 0755]
etc/bundles/producer_de.properties [new file with mode: 0755]
etc/bundles/producer_en.properties [new file with mode: 0755]
etc/bundles/producer_es.properties [new file with mode: 0755]
etc/bundles/producer_gn.properties [new file with mode: 0755]
etc/bundles/producer_nl.properties [new file with mode: 0755]
etc/bundles/producer_qu.properties [new file with mode: 0755]
etc/config.properties [new file with mode: 0755]
etc/config.properties-dist [new file with mode: 0755]
etc/extralib/README [new file with mode: 0755]
etc/extrasource/NYCAdminInterfaceLocalizer.java [new file with mode: 0755]
etc/extrasource/NYCLocalizer.java [new file with mode: 0755]
etc/extrasource/README [new file with mode: 0755]
etc/log4j.properties [new file with mode: 0755]
etc/open/disclaimer.inc.de [new file with mode: 0755]
etc/open/donearticle.template [new file with mode: 0755]
etc/open/donecomment.template [new file with mode: 0755]
etc/open/donetranslation.template [new file with mode: 0755]
etc/open/dupearticle.template [new file with mode: 0755]
etc/open/dupecomment.template [new file with mode: 0755]
etc/open/editarticle.template [new file with mode: 0755]
etc/open/editcomment.template [new file with mode: 0755]
etc/open/edittranslation.template [new file with mode: 0755]
etc/open/email_article.template [new file with mode: 0755]
etc/open/error.template [new file with mode: 0755]
etc/open/posting_disabled.template [new file with mode: 0755]
etc/open/preparemail.template [new file with mode: 0755]
etc/open/search_results.template [new file with mode: 0755]
etc/open/sent_mail.template [new file with mode: 0755]
etc/open/sessionerror.template [new file with mode: 0755]
etc/open/unsupportedmediatype.template [new file with mode: 0755]
etc/open/usererror.template [new file with mode: 0755]
etc/producer/RSS-full.template [new file with mode: 0755]
etc/producer/RSS.template [new file with mode: 0755]
etc/producer/article.template [new file with mode: 0755]
etc/producer/batchnav.template [new file with mode: 0755]
etc/producer/cities.inc [new file with mode: 0755]
etc/producer/featurearchive.template [new file with mode: 0755]
etc/producer/html2fo.xsl [new file with mode: 0755]
etc/producer/images/arrow_down.gif [new file with mode: 0755]
etc/producer/images/audio_big.gif [new file with mode: 0755]
etc/producer/images/audio_small.gif [new file with mode: 0755]
etc/producer/images/background.jpg [new file with mode: 0755]
etc/producer/images/background2.jpg [new file with mode: 0755]
etc/producer/images/cleft.gif [new file with mode: 0755]
etc/producer/images/extlink.gif [new file with mode: 0755]
etc/producer/images/intlink.gif [new file with mode: 0755]
etc/producer/images/link_small.gif [new file with mode: 0755]
etc/producer/images/logo.gif [new file with mode: 0755]
etc/producer/images/mail_small.gif [new file with mode: 0755]
etc/producer/images/maillink.gif [new file with mode: 0755]
etc/producer/images/photo_big.gif [new file with mode: 0755]
etc/producer/images/photo_small.gif [new file with mode: 0755]
etc/producer/images/space.gif [new file with mode: 0755]
etc/producer/images/text_big.gif [new file with mode: 0755]
etc/producer/images/text_small.gif [new file with mode: 0755]
etc/producer/images/video_big.gif [new file with mode: 0755]
etc/producer/images/video_small.gif [new file with mode: 0755]
etc/producer/languagebar.template [new file with mode: 0755]
etc/producer/navigation.template [new file with mode: 0755]
etc/producer/newswirearchive.template [new file with mode: 0755]
etc/producer/newswireinclude.template [new file with mode: 0755]
etc/producer/printablecontent.template [new file with mode: 0755]
etc/producer/producers.xml [new file with mode: 0755]
etc/producer/radicalendar.template [new file with mode: 0755]
etc/producer/routines.template [new file with mode: 0755]
etc/producer/startpage.template [new file with mode: 0755]
etc/producer/staticpage.template [new file with mode: 0755]
etc/producer/topicpage.template [new file with mode: 0755]
etc/scripts/bundletool.sh [new file with mode: 0755]
etc/scripts/produce.sh [new file with mode: 0755]
etc/scripts/reload.sh [new file with mode: 0755]

diff --git a/etc/bundles/adminlocal.properties b/etc/bundles/adminlocal.properties
new file mode 100755 (executable)
index 0000000..3b22e3d
--- /dev/null
@@ -0,0 +1,13 @@
+# put your own local admin properties in this file
+# (like for custom article types)
+
+start.fileedit.prodtemp.title = edit producer templates
+start.fileedit.opentemp.title = edit open templates 
+start.fileedit.bundles.title = edit language bundles
+
+articletypes.translation = Translation
+articletypes.communityrssfeed = Community RSS Feed
+articletypes.communityrssarticle = Community RSS Article
+articletypes.promotednewswire = Promoted Newswire
+articletypes.promotedcommunityarticle = Promoted Community Article
+articletypes.static = Static Page
\ No newline at end of file
diff --git a/etc/bundles/open_ay.properties b/etc/bundles/open_ay.properties
new file mode 100755 (executable)
index 0000000..2d6f386
--- /dev/null
@@ -0,0 +1,84 @@
+########## open posting ##########
+# language: aymara
+
+optional=opcional
+required=requerido
+
+comment.htmltitle=Mir | confirmar comentario
+comment.header=Añadiendo un comentario al artículo
+comment.password=Password
+comment.note=
+comment.formtitle=Formulario-del-comentario
+comment.title=Título del comentario
+comment.name=su nombre
+comment.email=su email
+comment.url=su dirección web
+comment.phone=su número de teléfono
+comment.address=su dirección
+comment.language=idioma de su comentario
+comment.text=su comentario
+comment.submit=envíar comentario
+comment.reset=limpiar formulario
+
+commentdone.htmltitle=Mir | envío abierto
+commentdone.thanks=Su comentario está de camino!
+commentdone.wait=In wenigen Minuten ist Deine Ergänzung unter dem ergänzten Artikel.<br>Manchmal kann es aber aufgrund technischer Probleme etwas dauern bis sie erscheint.<br>
+commentdone.criteria=Die Moderationskriterien von indymedia kannst Du <a href="http://de.indymedia.org/static/moderation.html" target="_blank">hier</a> nachlesen.
+commentdone.stay_calm=Gedulde Dich einen Moment - Es lohnt sich!
+commentdone.back=Zur&uuml;ck zum kommentierten Artikel
+
+commentdupe.htmltitle=Mir | envío abierto - comentario duplicado
+commentdupe.title=Mantenga la calma unos breves instantes.
+commentdupe.explanation=Probablemente haya apretado el botón de recarga o enviado el comentario en una segunda ocasión. Si puede leer esto, significa que su comentario ha sido recibido con éxito y será incluido en la página de artículos en breves instantes.
+commentdupe.no_panic=No se altere!
+commentdupe.back=Volver al artículo comentado
+
+posting.htmltitle=Mir | envío abierto
+posting.password=Password
+posting.meta.description=Centro de Periodismo Independiente
+posting.meta.author=Colectivo IMC
+posting.meta.keywords=Periodismo Libre
+posting.jump_to_form=Ir directamente al formulario.
+posting.title=Publique su artículo
+posting.nr_of_media=Número de recursos mediáticos
+posting.nr_of_media.info=(wenn Du mehr als eine Datei hochladen willst, bitte hier die Anzahl eintragen und den Knopf drücken, <b>bevor</b> Du weitere Felder ausfüllst.)
+posting.nr_of_media.submit=Anzahl festlegen
+posting.form.title=Formulario de publicación
+posting.title=<b>Título</b> de su artículo
+posting.title.info=(Bitte wähle einen möglichst klaren, aussagekräftigen Titel.)
+posting.topic=<b>Thema</b> Deines Beitrags
+posting.topic.info=(Mehrfachwahl ist möglich. Bitte dazu die [Strg]- bzw [Ctrl]-Taste benutzen)
+posting.author=<b>autor</b> de este artículo
+posting.abstract=Descripción <b>breve</b> de su artículo
+posting.abstract.info=(Sie soll den LeserInnen schnell vermitteln, worum es in Deinem Beitrag geht. Falls Du den ersten Absatz Deines Artikels dazu wählst, achte bitte darauf ihn im Haupttextfeld weiter unten nicht nochmal einzusetzen.)
+posting.abstract.constraint=(que no exceda de <b>5 líneas</b>)
+posting.contact.info=La información de contacto es opcional pero ayuda a que otras personas puedan ponerse en contacto con usted.
+posting.email=su dirección de email
+posting.url=su dirección web
+posting.address=su dirección personal
+posting.phone=su número de teléfono
+posting.language=idioma de su artículo
+posting.text=su <b>artículo</b>
+posting.text.info=ponga aquí el texto de su artículo
+posting.media=recursos mediáticos
+posting.media.info=cargue sus ficheros de medios (de momento tan solo se aceptan jpg|gif|mp3|avi|qt|mpeg)
+posting.media.howto=(Dazu wählst Du mit "Durchsuchen.." die entsprechende Datei auf Deiner Festplatte aus.
+posting.media.media=Media
+posting.media.title=subtítulo de los recursos mediáticos
+posting.submit.info=Bitte drücke den Verschicken-Knopf<b> nur einmal</b>!<br> In wenigen Minuten erscheind Dein Beitrag dann auf der <a href="http://de.indymedia.org/open.html" target="_blank"> <b>"Open Posting"</b></a> - Seite. &nbsp; Das ist nicht die Startseite.<br> Manchmal kann es aber aufgrund technischer Probleme etwas dauern bis er erscheint.
+posting.criteria=Die <b>Moderationskriterien</b> kannst Du <a href="http://de.indymedia.org/static/moderation.html" target="_blank"><b>hier nachlesen</b></a>
+posting.submit=Enviar (la paciencia es una virtud!!)
+posting.reset=Limpiar formulario
+
+postingdone.htmltitle=Mir | open posting
+postingdone.title=Hurra, Du hast Deinen Artikel abgeschickt!
+postingdone.info=Dein Artikel landet in einigen Minuten auf der <a href="http://de.indymedia.org/open.html">"Open Posting"</a> - Seite. Das ist nicht die Startseite. Die Moderationskriterien kannst Du <a href="http://de.indymedia.org/static/moderation.html">hier lesen</a>
+postingdone.stay_calm=Gedulde Dich einen Moment! Es lohnt sich!
+postingdone.back=Zur&uuml;ck
+
+postingdupe.htmltitle=Mir | envío abierto - envio duplicado
+postingdupe.title=Mantenga la calma, su envio será procesado en breves instantes.
+postingdupe.explanation=       Posiblemente haya pulsado el botón de recarga de su navegador, o enviado su articulo por segunda vez Si está leyendo este texto, significa que su envío ha sido recibido con éxito y que será incluido en la pagina de artículos en breves instantes.<br>Como detalle técnico, este imc está conectado a un servidor proxy que no es actualizado cada minuto.
+postingdupe.no_panic=No pierda los estribos!
+postingdupe.back=Atrás
+htmlcharset=utf-8
diff --git a/etc/bundles/open_de.properties b/etc/bundles/open_de.properties
new file mode 100755 (executable)
index 0000000..5a123e7
--- /dev/null
@@ -0,0 +1,159 @@
+########## open posting ##########
+# language: deutsch / german
+
+langcode=de
+
+optional=optional
+required=muss ausgef&uuml;llt werden
+
+comment.htmltitle=Mir | comment.commit
+comment.header=Kommentierung eines Beitr&auml;gs bei Indymedia
+comment.password=Password
+comment.note=Hinweis: Dein Kommentar kann in jedem Stil und jeder Form sein, akademisch bis pers&ouml;nlich.<br>Aber bitte bleibe beim <b>Thema des Artikels</b>, den Du kommentierst und versuche, <b>pr&auml;zise</b> zu sein.
+comment.formtitle=Kommentierungsformular
+comment.title=Titel des Kommentars
+comment.name=Dein Name
+comment.email=Deine eMail-Adresse (erscheint auf der Seite)
+comment.url=Deine Web Adresse
+comment.phone=Deine Telefon-Nr.
+comment.address=Deine Adresse
+comment.language=Die Sprache deines Kommentares
+comment.text=Dein Kommentar
+comment.submit=Kommentar abschicken
+comment.reset=Formular l&ouml;schen
+
+commentdone.htmltitle=Mir | open posting
+commentdone.thanks=Danke. Deine Ergänzung ist jetzt auf dem Weg zur Website!
+commentdone.wait=In wenigen Minuten ist Deine Ergänzung unter dem ergänzten Artikel.<br>Manchmal kann es aber aufgrund technischer Probleme etwas dauern bis sie erscheint.<br>
+commentdone.criteria=Die Moderationskriterien kannst Du -link- nachlesen.
+commentdone.stay_calm=Gedulde Dich einen Moment - Es lohnt sich!
+commentdone.back=Zur&uuml;ck zum kommentierten Artikel
+
+commentdupe.htmltitle=Mir | open posting - Kommentar-Duplikat
+commentdupe.title=Immer ruhig mit den jungen Pferden!
+commentdupe.explanation=Du hast vermutlich den Reload-Button benutzt oder versucht, Deinen Kommentar noch einmal zu posten. Das ist aber unn&ouml;tig. Die Tatsache, dass Du diesen Text liest, bedeutet, dass Dein Kommentar schon angekommen ist. Er wird gleich auf der Seite auftauchen. Versprochen.
+commentdupe.no_panic=Keine Panik
+commentdupe.back=Zur&uuml;ck zum kommentierten Artikel
+
+search.info=Suchergebnis:
+search.title=SUCHE
+search.htmltitle=MirSearch (powered by lucene)
+search.mainsearchfield=Nach folgendem suchen in Titel, Inhalt, oder Zusammenfassung:
+search.searchbutton=Suchen
+search.refine=Suche weiter einschränken:
+search.all_or_any=alle Worte oder auch einzelne?
+search.all=alle Worte
+search.any=eines der Worte
+search.by_author=Artikel geschrieben von:
+search.by_topic=nur in folgendem Thema suchen:
+search.all_topics=Alle Themen
+search.with_images=nur Beitr&auml;ge mit Bildern
+search.with_audio=nur Beitr&auml;ge mit Audio
+search.with_video=nur Beitr&auml;ge mit Video
+search.yes=Ja
+search.no=Nein
+search.sort_how=Wie sortiert?
+search.by_score=Wie zutreffend?
+search.old_first=neue zuerst
+search.new_first=alte zuerst
+search.back=Zur&uuml;ck
+search.forward=weiter
+search.numhits=Anzahl der Treffer
+search.result.title=Titel:
+search.result.author=AuthorIn:
+search.result.date=Datum:
+search.result.description=Zusammenfassung:
+
+
+
+
+
+posting.htmltitle=Mir | open posting
+
+posting.step00= Schritt 00
+posting.step01= Schritt 01
+posting.step02= Schritt 02
+posting.step03= Schritt 03
+posting.step04= Schritt 04
+posting.step05= Schritt 05
+posting.step06= Schritt 06
+
+posting.readhowtos = Tips zum Posten von Artikeln hier verlinken.
+
+posting.password=Password
+posting.meta.description=Indymedia Germany | Unabh&auml;ngiges Medienzentrum
+posting.meta.author=IMC Kollektiv
+posting.meta.keywords=Freie Medien, Gegen&ouml;ffentlichkeit
+posting.jump_to_form=Direkt zum Eingabeformular springen
+posting.title=Ver&ouml;ffentliche Deinen Beitrag
+posting.nr_of_media=Anzahl der Medien (max 20)
+posting.nr_of_media.info=(wenn Du mehr als eine Datei hochladen willst, bitte hier die Anzahl eintragen und den Knopf drücken, <b>bevor</b> Du weitere Felder ausfüllst.)
+posting.nr_of_media.submit=Anzahl festlegen
+posting.form.title=Ver&ouml;ffentlichungsformular
+posting.title=Gib Deinem Beitrag einen <b>Titel</b>
+posting.title.info=(Bitte wähle einen möglichst klaren, aussagekräftigen Titel.)
+posting.topic=<b>Thema</b> Deines Beitrags
+posting.topic.info=(Mehrfachwahl ist möglich. Bitte dazu die [Strg]- bzw [Ctrl]-Taste benutzen)
+posting.author=<b>AutorIn</b> des Beitrags
+posting.abstract=Eine kurze <b>Zusammenfassung</b> des Beitrags
+posting.abstract.info=(Sie soll den LeserInnen schnell vermitteln, worum es in Deinem Beitrag geht. Falls Du den ersten Absatz Deines Artikels dazu wählst, achte bitte darauf ihn im Haupttextfeld weiter unten nicht nochmal einzusetzen.)
+posting.abstract.constraint=(nicht mehr als <b>5 Zeilen</b>)
+posting.contact.info=Die Kontaktinformationen sind optional, aber erm&ouml;glichen, dass die IndymedialeserInnen (z.B. auch JournalistInnen) Dich bez&uuml;glich Deines Beitrages, z.B. für Rückfragen, erreichen k&ouml;nnen, was auch eine Weiterverwertung Deines Beitrages an anderen Stellen erm&ouml;glicht.
+posting.email=Deine eMail-Adresse (erscheint auf der Seite)
+posting.url=Eine Web-Adresse zum Artikel
+posting.address=Deine Adresse
+posting.phone=Deine Telefon-Nr.
+posting.language=Die Sprache deines Beitrages
+posting.text=Dein <b>Artikel</b>
+posting.text.info=(Der Haupttext Deines Beitrages)
+posting.media=Medien
+posting.media.info=Hier kannst Du eine oder mehrere Bild-, Audio- oder Videodateien zu Deinem Artikel hochladen.
+posting.media.howto=(Dazu wählst Du mit "Durchsuchen.." die entsprechende Datei auf Deiner Festplatte aus.
+posting.media.media=Media
+posting.media.title=Medienunterschrift
+posting.submit.info=Bitte drücke den Verschicken-Knopf<b> nur einmal</b>!<br> In wenigen Minuten erscheind Dein Beitrag dann auf der Seite. &nbsp; <br> Manchmal kann es aber aufgrund technischer Probleme etwas dauern bis er erscheint.
+posting.criteria=Die <b>Moderationskriterien</b> kannst Du nachlesen.
+posting.submit=Beitrag abschicken
+posting.reset=Formular l&ouml;schen
+
+postingdone.htmltitle=Mir | open posting
+postingdone.title=Hurra, Du hast Deinen Artikel abgeschickt!
+postingdone.info=Dein Artikel landet in einigen Minuten auf der Seite.
+postingdone.stay_calm=Gedulde Dich einen Moment! Es lohnt sich!
+postingdone.back=Zur&uuml;ck
+
+postingdupe.htmltitle=Mir | open posting - Posting-Duplikat
+postingdupe.title=Immer ruhig mit den jungen Pferden!
+postingdupe.explanation=Du hast vermutlich den Reload-Button benutzt oder versucht, Deinen Artikel noch einmal zu posten. Das ist aber unn&ouml;tig. <br> Die Tatsache, dass Du diesen Text liest, bedeutet, dass Dein Posting schon angekommen ist. Er wird gleich auf der Seite auftauchen. Versprochen.
+postingdupe.no_panic=Keine Panik
+postingdupe.back=Zur&uuml;ck
+
+email.prepare.htmltitle=E-Mail Versand
+email.prepare.title=Beitrag per E-Mail versenden
+email.prepare.description= Nutze dieses Formular, um einen Artikel per E-Mail zu versenden. Die ersten drei Felder m&uuml;ssen ausgef&uuml;llt werden.
+email.prepare.sendtowhom=An folgende Adresse schicken:
+email.prepare.from.email=Deine eigen E-Mail Adresse:
+email.prepare.from.name=Dein Name:
+email.prepare.comment=Ein zus&auml;tzlicher Kommentar:
+email.prepare.chooselanguage=Erkl&auml;rungstext in folgender Sprache:
+email.prepare.send=ABSCHICKEN
+email.sent.htmltitle=E-Mail erfolgreich versand.
+email.sent.title=Deine E-Mail wurde verschickt.
+email.sent.text=Der Artikel wurde an die angegebene Adresse weitergeleitet.
+email.error.invalidtoaddress=Die angegebene Adresse ist ung&uuml;ltig.
+email.error.invalidfromaddress=Deine eigene E-Mail-Adresse ist nicht g&uuml;ltig.
+email.comment.intro=Erg&auml;nzung angehängt {0}:
+
+error.htmltitle=Das System verursachte einen Fehler
+error.title=Das System verursachte einen Fehler
+error.text=Sowas kommt schonmal vor. Auch wenn Dir die folgende Fehlermeldung nichts sagt, schicke sie doch bitte an, <br><a href="mailto:{0}">{1}</a>:
+error.text2=Also bitte eine E-Mail mit dem <font color="Red">roten Text</font> und möglichst detailierten Informationen, was zu dem Fehler geführt haben mag an<a href="mailto:{0}">{1}</a>. Danke!
+
+
+
+newsletter.prepare.htmltitle=Newslette erstellen
+newsletter.prepare.title=Newsletter erstellen
+newsletter.prepare.description=Nutze das folgende Formular, um einen Newsletter zu erstellen. Schreibe Artikel-ID in die K&auml;sten und dr&uuml;ck die Buttons.
+
+
+htmlcharset=utf-8
diff --git a/etc/bundles/open_en.properties b/etc/bundles/open_en.properties
new file mode 100755 (executable)
index 0000000..5648d17
--- /dev/null
@@ -0,0 +1,172 @@
+########## open posting ##########
+# language: english
+
+langcode=en
+
+optional=optional
+required=required
+
+general.unexpectederror=An unexpected error has occurred
+
+
+posting.htmltitle=Mir | open posting
+
+posting.step00= Step 00
+posting.step01= Step 01
+posting.step02= Step 02
+posting.step03= Step 03
+posting.step04= Step 04
+posting.step05= Step 05
+posting.step06= Step 06
+
+posting.readhowtos = Add some general tips on how to post stories.
+
+posting.password=Password
+posting.meta.description=Mir CMS system
+posting.meta.author=mir
+posting.meta.keywords=free media
+posting.jump_to_form=Jump directly to the form.
+posting.title=Publish your article!
+posting.nr_of_media=Number of Media Items (max 20)
+posting.nr_of_media.info=(Enter the number of files you want to upload and press the button <b>before</b> you enter data into the other fields.)
+posting.nr_of_media.submit=define number (max 20)
+posting.form.title=Publishing Form
+posting.title=<b>title</b> of your article
+posting.title.info=(Please use a clear and meaningful title)
+posting.topic=<b>Topic</b> of your Posting
+posting.topic.info=(multiple selection is possible. use the [Ctrl] key)
+posting.author=<b>author</b> of this article
+posting.abstract=A short <b>abstract</b> of your article
+posting.abstract.info=(should give the readers a short introduction on what your article is about. If you use the first paragraph of your article for this purpose, please do not include it in the main text field below.)
+posting.abstract.constraint=(not more than <b>5 lines</b>)
+posting.contact.info=Contact information is optional but enables other people to get in touch with you.
+posting.email=your e-mail address
+posting.url=your web-site address
+posting.address=your address
+posting.phone=your telephone number
+posting.language=the language of your article
+posting.text=your <b>article</b>
+posting.text.info=fill in the text of your article here
+posting.media.ftpmedia = FTP uploads (please enter the filename)
+posting.media=media
+posting.media.info=upload media-files (supported are jpg|gif|mp3|avi|qt|mpeg) max size: 20 Mb
+posting.media.howto=(Press "Browse" and select the file you want to upload)
+posting.media.media=Media
+posting.media.title=media sub-title
+posting.media.cancel=Cancel
+posting.submit.info=Please press submit <b>only once</b>!<br>It will appear in a few minutes on the main page. It might even take longer in case of technical problems.
+posting.criteria=
+posting.submit=Submit (patience is a virtue!)
+posting.reset=Form Reset
+posting.error.missingpassword=The one-time password must be copied into the password field
+posting.error.invalidpassword=The one-time password was not copied correctly into the password field
+posting.error.missingfield=At least one field was not correctly entered
+media.error.unsupportedformat=The format of the media you uploaded ({0}) is not supported
+
+postingdone.htmltitle=open posting
+postingdone.title=You have successfully submitted your article
+postingdone.info=Your article will appear on the website in a few minutes. 
+postingdone.stay_calm=
+postingdone.back=Back
+
+postingdupe.htmltitle=open posting - duplicate posting 
+postingdupe.title=Stay calm. Things will happen soon.
+postingdupe.explanation=You probably clicked on the reload button or submitted your posting a second time. The fact that you can read this text means that your posting has been recieved and will soon be included in the article page.<br>
+postingdupe.no_panic=Don't panic
+postingdupe.back=Back
+
+postingdisabled.info=Open posting is not possible at this moment. <br> We apologize for any inconvenience this may cause you.
+postingdisabled.htmltitle=Mir | Open posting disabled
+postingdisabled.title=Open posting disabled
+postingdisabled.back=Back
+
+
+comment.htmltitle=Mir | comment
+comment.header=Adding a coment to an article
+comment.password=Password
+comment.note=
+comment.formtitle=Comment 
+comment.title=title of this comment
+comment.name=your name
+comment.email=your eMail
+comment.url=your web site address
+comment.phone=your telephone number.
+comment.address=your address
+comment.language=language of your comment
+comment.text=your comment
+comment.submit=submit comment
+comment.reset=reset form
+comment.error.missingpassword=The one-time password must be copied into the password field
+comment.error.invalidpassword=The one-time password was not copied correctly into the password field
+
+commentdone.htmltitle=Mir | open posting
+commentdone.thanks=Your comment is on the way!
+commentdone.wait=It will take some minutes until your addition appears under the article.<br>It may take even longer in case of technical problems.<br>
+commentdone.criteria=
+commentdone.stay_calm=Please wait a few minutes
+commentdone.back=Back to the article
+
+commentdupe.htmltitle=Mir | open posting - duplicate entry
+commentdupe.title=Stay calm. Things will happen soon.
+commentdupe.explanation=You probably clicked on the reload button or submitted your comment a second time. The fact that you can read this text means that your comment has been recieved and will soon be included in the article page.
+commentdupe.no_panic=Don't panic
+commentdupe.back=Back to the article
+
+search.info=Results of your search:
+search.title=SEARCH
+search.htmltitle=MirSearch (powered by lucene)
+search.mainsearchfield=Search for the following in title,content, or description:
+search.searchbutton=Search!
+search.refine=Refine your search:
+search.all_or_any=all words or any of the words?
+search.all=all words
+search.any=any of the words
+search.by_author=search for articles written by:
+search.by_topic=search in the following topic only:
+search.all_topics=All topics
+search.with_images=only return content with images?
+search.with_audio=only return content with audio?
+search.with_video=only return content with video?
+search.yes=yes
+search.no=no
+search.sort_how=Sort results how?
+search.by_score=By score
+search.old_first=Newest first
+search.new_first=Oldest first
+search.back=Back
+search.forward=Forward
+search.numhits=Number of hits
+search.result.title=Title:
+search.result.author=Author:
+search.result.date=Date:
+search.result.description=Description:
+
+
+email.prepare.htmltitle=Preparing Email Forward
+email.prepare.title=Prepare the email forward
+email.prepare.description=Use the following form to send an article as an email.  The first three fields are required.
+email.prepare.sendtowhom=Forward article to this email address:
+email.prepare.from.email=Your email address:
+email.prepare.from.name=Your name:
+email.prepare.comment=A comment to attach to the article:
+email.prepare.chooselanguage=The language you want the explanatory text of the forwarded article to appear in:
+email.prepare.send=SEND
+email.sent.htmltitle=Email sent successfully
+email.sent.title=Your email has been sent
+email.sent.text=The article has been forwarded to the specified address.
+email.error.invalidtoaddress=The address to send the article to is not valid
+email.error.invalidfromaddress=Your email address is not valid
+email.comment.intro=Attached comment from {0}:
+
+error.htmltitle=the system caused an error
+error.title=The system caused an error
+error.text=This can happen. Even if the following error message is not be comprehensible for you, <br>it might be helpful to <a href="mailto:{0}">{1}</a>:
+error.text2=So please send an e-mail with the <font color="Red">red text</font> and detailed information regarding the events that led to this error to <a href="mailto:{0}">{1}</a>. Thanks!
+
+
+
+newsletter.prepare.htmltitle=Preparing Newsletter
+newsletter.prepare.title=Prepare the newsletter
+newsletter.prepare.description=Use the following form to prepare a newsletter.  Put article ids in the boxes and hit the button.
+
+htmlcharset=utf-8
diff --git a/etc/bundles/open_es.properties b/etc/bundles/open_es.properties
new file mode 100755 (executable)
index 0000000..7d61f37
--- /dev/null
@@ -0,0 +1,99 @@
+########## open posting ##########
+# language: espanol / spanish
+
+langcode=es
+
+general.authoredby=Por el
+
+optional=opcional
+required=requerido
+
+comment.htmltitle=Mir | confirmar comentario
+comment.header=A�adiendo un comentario al art�culo
+comment.password=Password
+comment.note=
+comment.formtitle=Formulario-del-comentario
+comment.title=T�tulo del comentario
+comment.name=su nombre
+comment.email=su email
+comment.url=su direcci�n web
+comment.phone=su n�mero de tel�fono
+comment.address=su direcci�n
+comment.language=idioma de su comentario
+comment.text=su comentario
+comment.submit=env�ar comentario
+comment.reset=limpiar formulario
+
+commentdone.htmltitle=Mir | env�o abierto
+commentdone.thanks=Su comentario est� de camino!
+commentdone.wait=In wenigen Minuten ist Deine Erg�nzung unter dem erg�nzten Artikel.<br>Manchmal kann es aber aufgrund technischer Probleme etwas dauern bis sie erscheint.<br>
+commentdone.criteria=Die Moderationskriterien von indymedia kannst Du <a href="http://de.indymedia.org/static/moderation.html" target="_blank">hier</a> nachlesen.
+commentdone.stay_calm=Gedulde Dich einen Moment - Es lohnt sich!
+commentdone.back=Zur&uuml;ck zum kommentierten Artikel
+
+commentdupe.htmltitle=Mir | env�o abierto - comentario duplicado
+commentdupe.title=Mantenga la calma unos breves instantes.
+commentdupe.explanation=Probablemente haya apretado el bot�n de recarga o enviado el comentario en una segunda ocasi�n. Si puede leer esto, significa que su comentario ha sido recibido con �xito y ser� incluido en la p�gina de art�culos en breves instantes.
+commentdupe.no_panic=No se altere!
+commentdupe.back=Volver al art�culo comentado
+
+posting.htmltitle=Mir | env�o abierto
+
+posting.step00= Step 00
+posting.step01= Step 01
+posting.step02= Step 02
+posting.step03= Step 03
+posting.step04= Step 04
+posting.step05= Step 05
+posting.step06= Step 06
+
+posting.readhowtos = Add some general tips on how to post stories.
+
+posting.password=Password
+posting.meta.description=Centro de Periodismo Independiente
+posting.meta.author=Colectivo IMC
+posting.meta.keywords=Periodismo Libre
+posting.jump_to_form=Ir directamente al formulario.
+posting.title=Publique su art�culo
+posting.nr_of_media=N�mero de recursos medi�ticos
+posting.nr_of_media.info=(wenn Du mehr als eine Datei hochladen willst, bitte hier die Anzahl eintragen und den Knopf dr�cken, <b>bevor</b> Du weitere Felder ausf�llst.)
+posting.nr_of_media.submit=Anzahl festlegen
+posting.form.title=Formulario de publicaci�n
+posting.title=<b>T�tulo</b> de su art�culo
+posting.title.info=(Bitte w�hle einen m�glichst klaren, aussagekr�ftigen Titel.)
+posting.topic=<b>Thema</b> Deines Beitrags
+posting.topic.info=(Mehrfachwahl ist m�glich. Bitte dazu die [Strg]- bzw [Ctrl]-Taste benutzen)
+posting.author=<b>autor</b> de este art�culo
+posting.abstract=Descripci�n <b>breve</b> de su art�culo
+posting.abstract.info=(Sie soll den LeserInnen schnell vermitteln, worum es in Deinem Beitrag geht. Falls Du den ersten Absatz Deines Artikels dazu w�hlst, achte bitte darauf ihn im Haupttextfeld weiter unten nicht nochmal einzusetzen.)
+posting.abstract.constraint=(que no exceda de <b>5 l�neas</b>)
+posting.contact.info=La informaci�n de contacto es opcional pero ayuda a que otras personas puedan ponerse en contacto con usted.
+posting.email=su direcci�n de email
+posting.url=su direcci�n web
+posting.address=su direcci�n personal
+posting.phone=su n�mero de tel�fono
+posting.language=idioma de su art�culo
+posting.text=su <b>art�culo</b>
+posting.text.info=ponga aqu� el texto de su art�culo
+posting.media=recursos medi�ticos
+posting.media.info=cargue sus ficheros de medios (de momento tan solo se aceptan jpg|gif|mp3|avi|qt|mpeg)
+posting.media.howto=(Dazu w�hlst Du mit "Durchsuchen.." die entsprechende Datei auf Deiner Festplatte aus.
+posting.media.media=Media
+posting.media.title=subt�tulo de los recursos medi�ticos
+posting.submit.info=Bitte dr�cke den Verschicken-Knopf<b> nur einmal</b>!<br> In wenigen Minuten erscheind Dein Beitrag dann auf der <a href="http://de.indymedia.org/html" target="_blank"> <b>"Open Posting"</b></a> - Seite. &nbsp; Das ist nicht die Startseite.<br> Manchmal kann es aber aufgrund technischer Probleme etwas dauern bis er erscheint.
+posting.criteria=Die <b>Moderationskriterien</b> kannst Du <a href="http://de.indymedia.org/static/moderation.html" target="_blank"><b>hier nachlesen</b></a>
+posting.submit=Enviar (la paciencia es una virtud!!)
+posting.reset=Limpiar formulario
+
+postingdone.htmltitle=open posting
+postingdone.title=Hurra, Du hast Deinen Artikel abgeschickt!
+postingdone.info=Dein Artikel landet in einigen Minuten auf der <a href="http://de.indymedia.org/html">"Open Posting"</a> - Seite. Das ist nicht die Startseite. Die Moderationskriterien kannst Du <a href="http://de.indymedia.org/static/moderation.html">hier lesen</a>
+postingdone.stay_calm=Gedulde Dich einen Moment! Es lohnt sich!
+postingdone.back=Zur&uuml;ck
+
+postingdupe.htmltitle=env�o abierto - envio duplicado
+postingdupe.title=Mantenga la calma, su envio ser� procesado en breves instantes.
+postingdupe.explanation=       Posiblemente haya pulsado el bot�n de recarga de su navegador, o enviado su articulo por segunda vez Si est� leyendo este texto, significa que su env�o ha sido recibido con �xito y que ser� incluido en la pagina de art�culos en breves instantes.<br>Como detalle t�cnico, este imc est� conectado a un servidor proxy que no es actualizado cada minuto.
+postingdupe.no_panic=No pierda los estribos!
+postingdupe.back=Atr�s
+htmlcharset=utf-8
diff --git a/etc/bundles/open_gn.properties b/etc/bundles/open_gn.properties
new file mode 100755 (executable)
index 0000000..cf58f87
--- /dev/null
@@ -0,0 +1,84 @@
+########## open posting ##########
+# language: guarani
+
+optional=opcional
+required=requerido
+
+comment.htmltitle=Mir | confirmar comentario
+comment.header=Añadiendo un comentario al artículo
+comment.password=Password
+comment.note=
+comment.formtitle=Formulario-del-comentario
+comment.title=Título del comentario
+comment.name=su nombre
+comment.email=su email
+comment.url=su dirección web
+comment.phone=su número de teléfono
+comment.address=su dirección
+comment.language=idioma de su comentario
+comment.text=su comentario
+comment.submit=envíar comentario
+comment.reset=limpiar formulario
+
+commentdone.htmltitle=Mir | envío abierto
+commentdone.thanks=Su comentario está de camino!
+commentdone.wait=In wenigen Minuten ist Deine Ergänzung unter dem ergänzten Artikel.<br>Manchmal kann es aber aufgrund technischer Probleme etwas dauern bis sie erscheint.<br>
+commentdone.criteria=Die Moderationskriterien von indymedia kannst Du <a href="http://de.indymedia.org/static/moderation.html" target="_blank">hier</a> nachlesen.
+commentdone.stay_calm=Gedulde Dich einen Moment - Es lohnt sich!
+commentdone.back=Zur&uuml;ck zum kommentierten Artikel
+
+commentdupe.htmltitle=Mir | envío abierto - comentario duplicado
+commentdupe.title=Mantenga la calma unos breves instantes.
+commentdupe.explanation=Probablemente haya apretado el botón de recarga o enviado el comentario en una segunda ocasión. Si puede leer esto, significa que su comentario ha sido recibido con éxito y será incluido en la página de artículos en breves instantes.
+commentdupe.no_panic=No se altere!
+commentdupe.back=Volver al artículo comentado
+
+posting.htmltitle=Mir | envío abierto
+posting.password=Password
+posting.meta.description=Centro de Periodismo Independiente
+posting.meta.author=Colectivo IMC
+posting.meta.keywords=Periodismo Libre
+posting.jump_to_form=Ir directamente al formulario.
+posting.title=Publique su artículo
+posting.nr_of_media=Número de recursos mediáticos
+posting.nr_of_media.info=(wenn Du mehr als eine Datei hochladen willst, bitte hier die Anzahl eintragen und den Knopf drücken, <b>bevor</b> Du weitere Felder ausfüllst.)
+posting.nr_of_media.submit=Anzahl festlegen
+posting.form.title=Formulario de publicación
+posting.title=<b>Título</b> de su artículo
+posting.title.info=(Bitte wähle einen möglichst klaren, aussagekräftigen Titel.)
+posting.topic=<b>Thema</b> Deines Beitrags
+posting.topic.info=(Mehrfachwahl ist möglich. Bitte dazu die [Strg]- bzw [Ctrl]-Taste benutzen)
+posting.author=<b>autor</b> de este artículo
+posting.abstract=Descripción <b>breve</b> de su artículo
+posting.abstract.info=(Sie soll den LeserInnen schnell vermitteln, worum es in Deinem Beitrag geht. Falls Du den ersten Absatz Deines Artikels dazu wählst, achte bitte darauf ihn im Haupttextfeld weiter unten nicht nochmal einzusetzen.)
+posting.abstract.constraint=(que no exceda de <b>5 líneas</b>)
+posting.contact.info=La información de contacto es opcional pero ayuda a que otras personas puedan ponerse en contacto con usted.
+posting.email=su dirección de email
+posting.url=su dirección web
+posting.address=su dirección personal
+posting.phone=su número de teléfono
+posting.language=idioma de su artículo
+posting.text=su <b>artículo</b>
+posting.text.info=ponga aquí el texto de su artículo
+posting.media=recursos mediáticos
+posting.media.info=cargue sus ficheros de medios (de momento tan solo se aceptan jpg|gif|mp3|avi|qt|mpeg)
+posting.media.howto=(Dazu wählst Du mit "Durchsuchen.." die entsprechende Datei auf Deiner Festplatte aus.
+posting.media.media=Media
+posting.media.title=subtítulo de los recursos mediáticos
+posting.submit.info=Bitte drücke den Verschicken-Knopf<b> nur einmal</b>!<br> In wenigen Minuten erscheind Dein Beitrag dann auf der <a href="http://de.indymedia.org/html" target="_blank"> <b>"Open Posting"</b></a> - Seite. &nbsp; Das ist nicht die Startseite.<br> Manchmal kann es aber aufgrund technischer Probleme etwas dauern bis er erscheint.
+posting.criteria=Die <b>Moderationskriterien</b> kannst Du <a href="http://de.indymedia.org/static/moderation.html" target="_blank"><b>hier nachlesen</b></a>
+posting.submit=Enviar (la paciencia es una virtud!!)
+posting.reset=Limpiar formulario
+
+postingdone.htmltitle=Mir | open posting
+postingdone.title=Hurra, Du hast Deinen Artikel abgeschickt!
+postingdone.info=Dein Artikel landet in einigen Minuten auf der <a href="http://de.indymedia.org/html">"Open Posting"</a> - Seite. Das ist nicht die Startseite. Die Moderationskriterien kannst Du <a href="http://de.indymedia.org/static/moderation.html">hier lesen</a>
+postingdone.stay_calm=Gedulde Dich einen Moment! Es lohnt sich!
+postingdone.back=Zur&uuml;ck
+
+postingdupe.htmltitle=Mir | envío abierto - envio duplicado
+postingdupe.title=Mantenga la calma, su envio será procesado en breves instantes.
+postingdupe.explanation=       Posiblemente haya pulsado el botón de recarga de su navegador, o enviado su articulo por segunda vez Si está leyendo este texto, significa que su envío ha sido recibido con éxito y que será incluido en la pagina de artículos en breves instantes.<br>Como detalle técnico, este imc está conectado a un servidor proxy que no es actualizado cada minuto.
+postingdupe.no_panic=No pierda los estribos!
+postingdupe.back=Atrás
+htmlcharset=utf-8
diff --git a/etc/bundles/open_qu.properties b/etc/bundles/open_qu.properties
new file mode 100755 (executable)
index 0000000..c0717ce
--- /dev/null
@@ -0,0 +1,84 @@
+########## open posting ##########
+# language: quechua
+
+optional=opcional
+required=requerido
+
+comment.htmltitle=confirmar comentario
+comment.header=Añadiendo un comentario al artículo
+comment.password=Password
+comment.note=
+comment.formtitle=Formulario-del-comentario
+comment.title=Título del comentario
+comment.name=su nombre
+comment.email=su email
+comment.url=su dirección web
+comment.phone=su número de teléfono
+comment.address=su dirección
+comment.language=idioma de su comentario
+comment.text=su comentario
+comment.submit=envíar comentario
+comment.reset=limpiar formulario
+
+commentdone.htmltitle=envío abierto
+commentdone.thanks=Su comentario está de camino!
+commentdone.wait=In wenigen Minuten ist Deine Ergänzung unter dem ergänzten Artikel.<br>Manchmal kann es aber aufgrund technischer Probleme etwas dauern bis sie erscheint.<br>
+commentdone.criteria=Die Moderationskriterien von indymedia kannst Du <a href="http://de.indymedia.org/static/moderation.html" target="_blank">hier</a> nachlesen.
+commentdone.stay_calm=Gedulde Dich einen Moment - Es lohnt sich!
+commentdone.back=Zur&uuml;ck zum kommentierten Artikel
+
+commentdupe.htmltitle=envío abierto - comentario duplicado
+commentdupe.title=Mantenga la calma unos breves instantes.
+commentdupe.explanation=Probablemente haya apretado el botón de recarga o enviado el comentario en una segunda ocasión. Si puede leer esto, significa que su comentario ha sido recibido con éxito y será incluido en la página de artículos en breves instantes.
+commentdupe.no_panic=No se altere!
+commentdupe.back=Volver al artículo comentado
+
+posting.htmltitle=envío abierto
+posting.password=Password
+posting.meta.description=Centro de Periodismo Independiente
+posting.meta.author=Colectivo IMC
+posting.meta.keywords=Periodismo Libre
+posting.jump_to_form=Ir directamente al formulario.
+posting.title=Publique su artículo
+posting.nr_of_media=Número de recursos mediáticos
+posting.nr_of_media.info=(wenn Du mehr als eine Datei hochladen willst, bitte hier die Anzahl eintragen und den Knopf drücken, <b>bevor</b> Du weitere Felder ausfüllst.)
+posting.nr_of_media.submit=Anzahl festlegen
+posting.form.title=Formulario de publicación
+posting.title=<b>Título</b> de su artículo
+posting.title.info=(Bitte wähle einen möglichst klaren, aussagekräftigen Titel.)
+posting.topic=<b>Thema</b> Deines Beitrags
+posting.topic.info=(Mehrfachwahl ist möglich. Bitte dazu die [Strg]- bzw [Ctrl]-Taste benutzen)
+posting.author=<b>autor</b> de este artículo
+posting.abstract=Descripción <b>breve</b> de su artículo
+posting.abstract.info=(Sie soll den LeserInnen schnell vermitteln, worum es in Deinem Beitrag geht. Falls Du den ersten Absatz Deines Artikels dazu wählst, achte bitte darauf ihn im Haupttextfeld weiter unten nicht nochmal einzusetzen.)
+posting.abstract.constraint=(que no exceda de <b>5 líneas</b>)
+posting.contact.info=La información de contacto es opcional pero ayuda a que otras personas puedan ponerse en contacto con usted.
+posting.email=su dirección de email
+posting.url=su dirección web
+posting.address=su dirección personal
+posting.phone=su número de teléfono
+posting.language=idioma de su artículo
+posting.text=su <b>artículo</b>
+posting.text.info=ponga aquí el texto de su artículo
+posting.media=recursos mediáticos
+posting.media.info=cargue sus ficheros de medios (de momento tan solo se aceptan jpg|gif|mp3|avi|qt|mpeg)
+posting.media.howto=(Dazu wählst Du mit "Durchsuchen.." die entsprechende Datei auf Deiner Festplatte aus.
+posting.media.media=Media
+posting.media.title=subtítulo de los recursos mediáticos
+posting.submit.info=Bitte drücke den Verschicken-Knopf<b> nur einmal</b>!<br> In wenigen Minuten erscheind Dein Beitrag dann auf der <a href="http://de.indymedia.org/html" target="_blank"> <b>"Open Posting"</b></a> - Seite. &nbsp; Das ist nicht die Startseite.<br> Manchmal kann es aber aufgrund technischer Probleme etwas dauern bis er erscheint.
+posting.criteria=Die <b>Moderationskriterien</b> kannst Du <a href="http://de.indymedia.org/static/moderation.html" target="_blank"><b>hier nachlesen</b></a>
+posting.submit=Enviar (la paciencia es una virtud!!)
+posting.reset=Limpiar formulario
+
+postingdone.htmltitle=open posting
+postingdone.title=Hurra, Du hast Deinen Artikel abgeschickt!
+postingdone.info=Dein Artikel landet in einigen Minuten auf der <a href="http://de.indymedia.org/html">"Open Posting"</a> - Seite. Das ist nicht die Startseite. Die Moderationskriterien kannst Du <a href="http://de.indymedia.org/static/moderation.html">hier lesen</a>
+postingdone.stay_calm=Gedulde Dich einen Moment! Es lohnt sich!
+postingdone.back=Zur&uuml;ck
+
+postingdupe.htmltitle=envío abierto - envio duplicado
+postingdupe.title=Mantenga la calma, su envio será procesado en breves instantes.
+postingdupe.explanation=       Posiblemente haya pulsado el botón de recarga de su navegador, o enviado su articulo por segunda vez Si está leyendo este texto, significa que su envío ha sido recibido con éxito y que será incluido en la pagina de artículos en breves instantes.<br>Como detalle técnico, este imc está conectado a un servidor proxy que no es actualizado cada minuto.
+postingdupe.no_panic=No pierda los estribos!
+postingdupe.back=Atrás
+htmlcharset=utf-8
diff --git a/etc/bundles/producer_ay.properties b/etc/bundles/producer_ay.properties
new file mode 100755 (executable)
index 0000000..4e5b5d1
--- /dev/null
@@ -0,0 +1,13 @@
+########## producer ##########
+# language: aymara
+
+content.htmltitle=mir.indymedia:
+content.email=email
+content.homepage=Homepage
+content.comment=Haga un comentario sobre este artículo
+copyright= Copyright © 2002 Indymedia Bolivia - Qollasuyu - Ivi Iyambae<br> Esta publicaci\97n es <a href="http://www.gnu.org/copyleft/copyleft.es.html">copyleft</a>. Por tanto, se permite difundir, citar y copiar literalmente sus materiales, de forma \92ntegra o parcial, por cualquier medio y para cualquier prop\97sito, siempre que se mantenga esta nota y se cite procedencia. Indymedia Euskal Herria no asume ninguna responsabilidad por el material publicado en este sitio, salvo sobre lo que aparece en la columna central. Toda la responsabilidad para verificar la veracidad y los derechos de reproducci\97n de un env\92o corresponden al autor que lo publica. Al publicar material en este sitio, el o la autora del env\92o asume que puede ser redistribuido libremente.
+contact=Contacto
+openposting.htmltitle=mir.indymedia:
+startpage.htmltitle=mir.indymedia: the mir-coders-website
+topiclist.htmltitle=mir.indymedia:
+htmlcharset=utf-8
diff --git a/etc/bundles/producer_de.properties b/etc/bundles/producer_de.properties
new file mode 100755 (executable)
index 0000000..343bb26
--- /dev/null
@@ -0,0 +1,49 @@
+########## producer ##########
+# language: deutsch
+
+general.readmore = den ganzen Artikel lesen
+general.keywords =  independent media, indymedia, seattle, genua, imc
+general.htmltitle = mir.indymedia.org
+general.page.prefix = Seite
+general.page.infix = von
+general.start = Start &gt;&gt;
+
+
+general.menu.missionStatement = Mission&nbsp;Statement
+general.menu.moderation = Moderation
+general.menu.support = Unterst&uuml;tzen
+general.menu.mailinglists = Mailinglisten
+general.menu.participate = Mitmachen
+
+startpage.newswire = NEWSWIRE
+startpage.imcs = IMC's
+startpage.breakingnews = Breaking-News
+
+
+navigation.languages = Sprachen:
+navigation.topics = Themen:
+navigation.publish = Ver&ouml;ffentlichen
+navigation.newswirearchive = Newswire-Archiv
+navigation.featurearchive = Feature-Archiv
+navigation.search.title = Suchen:
+navigation.search.button = Suchen >>
+navigation.search.all = alle Medientypen
+navigation.search.images = nur Bilder 
+navigation.search.video = nur Video
+navigation.search.audio = nur Audio
+navigation.search.url = /cgi-bin/search.pl
+
+
+
+article.email.prefix = e-Mail:
+article.homepage.prefix = Homepage:
+article.addcomment = Erg&auml;nze diesen Artikel
+article.send_as_email = Artikel per E-Mail versenden
+article.get_as_pdf = Artikel als PDF speichern
+article.add_to_pdf = Zur PDF-Newsletter-Auswahl hinzuf&uuml;gen
+article.newsletter_checkout = PDF-Newsletter-Auswahl downloaden
+
+newswirearchive.title = Newswire-Archive
+featurearchive.title = Feature-Archive
+
+htmlcharset=utf-8
diff --git a/etc/bundles/producer_en.properties b/etc/bundles/producer_en.properties
new file mode 100755 (executable)
index 0000000..a92db33
--- /dev/null
@@ -0,0 +1,52 @@
+########## producer ##########
+# language: english
+
+general.readmore = Full&#160;Story
+general.keywords = independent media, indymedia, nyc, new york city, ny, imc, indy
+general.htmltitle = nyc.indymedia.org 
+general.page.prefix = Page
+general.page.infix = of
+general.start = home 
+general.authoredby=By
+
+general.menu.missionStatement = mission&nbsp;statement
+general.menu.moderation = moderation
+general.menu.support = support
+general.menu.mailinglists = mailing&nbsp;lists
+general.menu.participate = how&nbsp;to&nbsp;participate
+
+startpage.newswire = NEWSWIRE
+startpage.imcs = IMC's
+startpage.breakingnews = Breaking news
+
+
+navigation.languages = Languages:
+navigation.topics = Topics:
+navigation.publish = Publish
+navigation.newswirearchive = Newswire<br> archive
+navigation.featurearchive = Feature<br> archive
+navigation.search.title = Search:
+navigation.search.button = Search >>
+navigation.search.all = all media
+navigation.search.images = with images
+navigation.search.video = with video
+navigation.search.audio = with audio
+navigation.search.url = /cgi-bin/search.pl
+
+
+
+article.email.prefix = e-mail:
+article.homepage.prefix = Homepage:
+
+article.addcomment = Add constructive comment
+article.makecomment.text = Add constructive comment
+
+article.send_as_email = Email this article to someone
+article.get_as_pdf = Download this article in pdf format
+article.add_to_pdf = Add this article to your pdf newsletter selection
+article.newsletter_checkout = Checkout and Download your PDF-newsletter selection
+
+newswirearchive.title = Newswire archive
+featurearchive.title = Feature archive
+
+htmlcharset=utf-8
diff --git a/etc/bundles/producer_es.properties b/etc/bundles/producer_es.properties
new file mode 100755 (executable)
index 0000000..b456b79
--- /dev/null
@@ -0,0 +1,30 @@
+########## producer ##########
+# language: espanol / spanish
+
+general.dateformat = dd/MM/yyyy hh:mm
+general.city.Amsterdam.title = emsterdem
+general.city.London.title = Londres
+general.city.Berlin.title = Berlin
+general.topic.Repression.title = repressiun
+general.topic.Feminism.title = feminisme
+general.read.text = Read
+
+general.readmore = Full&#160;Story
+general.authoredby=Por El
+
+article.title.prefix = bolivia.indymedia.org |
+article.email.prefix = e-mail:
+article.homepage.prefix = Homepage:
+
+article.addcomment = Add constructive comment
+article.makecomment.text = Add constructive comment
+
+startpage.title = nyc.indymedia.org 
+
+navigation.languages.caption = Linguas:
+navigation.cities.caption = Ciudades:
+navigation.topics.caption = Temas:
+navigation.publish.text = Publicar
+
+topicnavigation.page.prefix = pagina
+htmlcharset=utf-8
diff --git a/etc/bundles/producer_gn.properties b/etc/bundles/producer_gn.properties
new file mode 100755 (executable)
index 0000000..55c3397
--- /dev/null
@@ -0,0 +1,13 @@
+########## producer ##########
+# language: guarani
+
+content.htmltitle=mir.indymedia:
+content.email=email
+content.homepage=Homepage
+content.comment=Haga un comentario sobre este artículo
+copyright= Copyright © 2002 Indymedia Bolivia - Qollasuyu - Ivi Iyambae<br> Esta publicaci\97n es <a href="http://www.gnu.org/copyleft/copyleft.es.html">copyleft</a>. Por tanto, se permite difundir, citar y copiar literalmente sus materiales, de forma \92ntegra o parcial, por cualquier medio y para cualquier prop\97sito, siempre que se mantenga esta nota y se cite procedencia. Indymedia Euskal Herria no asume ninguna responsabilidad por el material publicado en este sitio, salvo sobre lo que aparece en la columna central. Toda la responsabilidad para verificar la veracidad y los derechos de reproducci\97n de un env\92o corresponden al autor que lo publica. Al publicar material en este sitio, el o la autora del env\92o asume que puede ser redistribuido libremente.
+contact=Contacto
+openposting.htmltitle=mir.indymedia:
+startpage.htmltitle=mir.indymedia: the mir-coders-website
+topiclist.htmltitle=mir.indymedia:
+htmlcharset=utf-8
diff --git a/etc/bundles/producer_nl.properties b/etc/bundles/producer_nl.properties
new file mode 100755 (executable)
index 0000000..d11fae4
--- /dev/null
@@ -0,0 +1,43 @@
+########## producer ##########
+# language: dutch
+
+general.readmore = Lees meer
+general.keywords =  vrije media, indymedia, seattle, genua, imc
+general.htmltitle = mir.indymedia.org
+general.page.prefix = Pagina 
+general.page.infix = van\r
+general.start = start &gt;&gt;
+
+general.menu.missionStatement = mission&nbsp;statement
+general.menu.moderation = redactie beleid
+general.menu.support = informatie
+general.menu.mailinglists = mailing&nbsp;lijsten
+general.menu.participate = doe&nbsp;mee!
+
+startpage.newswire = Nieuwslijn
+startpage.imcs = andere IMC's
+startpage.breakingnews = Laatste nieuws
+
+
+navigation.languages = Talen:
+navigation.topics = Onderwerpen:
+navigation.publish = Publiceer
+navigation.newswirearchive = Nieuwslijn archief
+navigation.featurearchive = Feature archief
+navigation.search.title = Zoek:
+navigation.search.button = Zoek >>
+navigation.search.all = alle media
+navigation.search.images = alleen plaatjes
+navigation.search.video = alleen video
+navigation.search.audio = alleen geluid
+navigation.search.url = /cgi-bin/search.pl
+
+
+
+article.email.prefix = e-mail:
+article.homepage.prefix = Homepage:
+article.addcomment = Maak een aanvulling op dit artikel
+
+newswirearchive.title = Nieuwslijn archief
+featurearchive.title = Feature archief
+htmlcharset=utf-8
diff --git a/etc/bundles/producer_qu.properties b/etc/bundles/producer_qu.properties
new file mode 100755 (executable)
index 0000000..34e52d1
--- /dev/null
@@ -0,0 +1,13 @@
+########## producer ##########
+# language: quechua
+
+content.htmltitle=mir.indymedia:
+content.email=email
+content.homepage=Homepage
+content.comment=Haga un comentario sobre este artículo
+copyright= Copyright © 2002 Indymedia Bolivia - Qollasuyu - Ivi Iyambae<br> Esta publicaci\97n es <a href="http://www.gnu.org/copyleft/copyleft.es.html">copyleft</a>. Por tanto, se permite difundir, citar y copiar literalmente sus materiales, de forma \92ntegra o parcial, por cualquier medio y para cualquier prop\97sito, siempre que se mantenga esta nota y se cite procedencia. Indymedia Euskal Herria no asume ninguna responsabilidad por el material publicado en este sitio, salvo sobre lo que aparece en la columna central. Toda la responsabilidad para verificar la veracidad y los derechos de reproducci\97n de un env\92o corresponden al autor que lo publica. Al publicar material en este sitio, el o la autora del env\92o asume que puede ser redistribuido libremente.
+contact=Contacto
+openposting.htmltitle=mir.indymedia:
+startpage.htmltitle=mir.indymedia: the mir-coders-website
+topiclist.htmltitle=mir.indymedia:
+htmlcharset=utf-8
diff --git a/etc/config.properties b/etc/config.properties
new file mode 100755 (executable)
index 0000000..40857b6
--- /dev/null
@@ -0,0 +1,334 @@
+#
+# Sample config for Mir
+# by Matthias <mjordan@code-fu.de> 2001-09-12
+# reorganized by <init@nadir.org>  2003-02-12
+#
+# The Mir software realizes a semi-dynamic web service:
+# The web server that is accessed by readers has pure static
+# pages. These pages are generated by the Mir software that
+# consists of a collection of Java servlets and HTML templates.
+#
+# Mir uses a database server to store the data that is needed to
+# build the static site.
+# So there are basically three parts in this config file:
+#
+# a) general & admin setup
+# b) static site config
+# c) dynamic site
+# d) database config
+#
+# edit this to suit your needs
+# After editing this file, two steps need to be taken to make the changes effective:
+#   1. ant has to be invoked.
+#   2. tomcat needs to be restarted.
+#
+# This file only contains the properties that are most often changed. To view all
+# possible config values, refer to the file default.properties, located in the
+# source directory. Don't change settings in default.properties however, instead
+# use this file.
+#
+# Note: for filename values, by default, files are used relative to the servlet's
+# WEB-INF directory.
+#
+# The setup uses the following assumptions:
+# The URL to reach the site is http://mir.someserver.org
+# The StorageRoot of this URL is /var/www/project/site/
+# All produced pages and media are located below this directory.
+
+################################################
+############    A) GENERAL SETUP  ##############
+################################################
+
+# mir/project an contact information
+# for display on the site
+#
+Mir.Name=mir.someserver.org
+Mir.Shortname=mir
+
+Mir.Contact-email.address=mir-project@somemailserver.org
+Mir.Contact-email.name=mir-project mailinglist
+
+Mir.Tech-email.address=mir-admins@somemailserver.org
+Mir.Tech-email.name=mir-admins mailinglist
+
+Mir.Public-email.address=project@somemailserver.org
+Mir.Public-email.name=project mailinglist
+
+# Default timezone to display times in in admin, producers
+# use CET for Central European Time (Paris, Amsterdam)
+# more timezones here: http://www.postgresql.org/docs/7.2/static/timezones.html
+#
+Mir.DefaultTimezone= UTC
+
+# Default date/time format
+# For the syntax of the format, refer to
+# http://java.sun.com/j2se/1.3/docs/api/java/text/SimpleDateFormat.html
+Mir.DefaultDateTimeFormat = yyyy-MM-dd HH:mm
+
+# For missing values, the FallbackLanguage is used as default
+#
+Mir.Admin.FallbackLanguage=en
+
+Mir.Localizer=NYCLocalizer
+
+#################################
+# admin interface configuration #
+#################################
+
+# Settings for the admin login:
+# If the default language is left empty, it will set the accept-language of
+# the client browser as the default.
+#
+Mir.Login.DefaultLanguage=en
+Mir.Login.Languages=en;de;fr;nl;es;pt;eu;sv;tr;zh;gz
+
+# Show who's logged in?
+#
+Mir.Admin.ShowLoggedinUsers=1
+
+# enable deletion of comments/articles?
+#
+Mir.Localizer.Admin.AllowDeleteComment=1
+Mir.Localizer.Admin.AllowDeleteArticle=1
+
+#######################
+# automated producers #
+#######################
+
+# Which producers need to be called after an article is posted
+#
+Mir.Localizer.OpenPosting.ContentProducers= \
+media.new;articles.changed;startpage.generate;synchronization.run
+
+# Which producers need to be called after a comment is posted
+#
+Mir.Localizer.OpenPosting.CommentProducers= \
+articles.changed;synchronization.run
+
+# Which producers need to be called after the "produce all new" link is clicked from admin
+#
+Mir.Localizer.Producer.AllNewProducers= \
+media.new;articles.changed;startpage.run;synchronization.run
+
+#########
+# rsync #
+#########
+
+#use rsync to mirror the website to a remote-host
+#
+Rsync=no
+Rsync.Script.Path=/var/lib/mir/nyc/mir/scripts
+
+
+###################
+# FileEdit module #
+###################
+
+# for extra flexibility editors can edit text-files from within the admin-interface
+# these files can then be included in webpages using SSI as footer or announcement-box...
+#
+# a list of directories to edit
+# format:
+#      <name>:<path>:<file filter>:<0|1 (recursion off or on)> [, ....]
+#
+ServletModule.FileEdit.Configuration= \
+  includes:/var/lib/mir/nyc/public_html/includes:.*\\.inc:1, \
+  prodtemp:/var/lib/mir/nyc/mir/etc/producer:.*\\.template:0, \
+  opentemp:/var/lib/mir/nyc/mir/etc/open:.*\\.template:0, \
+  bundles:/var/lib/mir/nyc/mir/etc/bundles:.*\\.properties:0
+       
+################################################
+###########  B) STATIC SITE CONFIG #############
+################################################
+
+# the url of the static site
+# on the machine where mir runs on
+#
+Producer.ProductionHost=http://nyc.indymedia.org
+
+# the url of the public site
+# only different from ProductionHost if pages are copied to
+# one ore more mirror-servers for delivery
+#
+Producer.PublicationHost=http://nyc.indymedia.org
+
+# Produrce.StorageRoot is the directory, in which
+# the generated HTML pages will be stored
+#
+Producer.StorageRoot=/var/lib/mir/nyc/public_html
+
+# use this property only if the pages are NOT produced under the docRoot
+# of the webserver. all links in the produced pages are prepended
+# with Producer.DocRoot
+#
+Producer.DocRoot=
+
+
+#####################
+# media server URLs #
+#####################
+
+# for better performance or load-sharing
+# images/media can be copied to (and served from) different servers
+# only in this case image- and medialinks need different URLs.
+
+# the url of the video-server
+#
+Producer.Video.Host=http://nyc.indymedia.org/video
+
+# the url of the audio-server
+#
+Producer.Audio.Host=http://nyc.indymedia.org/audio
+
+# the url of the image-server
+#
+Producer.Image.Host=http://nyc.indymedia.org/images
+
+# the url of the media-server
+#
+Producer.Media.Host=http://nyc.indymedia.org/media
+
+# the url of the real-media-server
+#
+Producer.RealMedia.Host=rtsp://some.streamingmedia.server/somedir/
+
+
+
+############################################
+# image/media specific storage directories #
+############################################
+
+# absolute directory, where the images are saved
+#
+Producer.Image.Path=/var/lib/mir/nyc/public_html/images
+
+
+# absolute directory, where the media files are saved
+#
+Producer.Media.Path=/var/lib/mir/nyc/public_html/media
+
+# absolute directory, where the realmedia data files(ra and rm) are saved
+# the ram files which point to the RealMedia.Host get saved in the regular Media dir
+# this should make rsyncing to a separate streaming server much easier
+#
+Producer.RealMedia.Path=/var/lib/nyc/public_html/rtsp
+
+# mir creates a small thumbnail-icon for each image posted
+# relativ directory, where the thumbnails will be saved
+#
+Producer.Image.IconPath=/icon
+
+
+####################
+# media-type-icons #
+####################
+
+# by default they are stored in the webservers [docRoot]/img directory
+# they are distibuted with the mir-source (etc/producer/images)
+# use the "staticimages.generate" producer once to copy them in place
+#
+
+# Tiny Icons for the media types on the newswire summary.
+# (right hand side of start page)
+#
+Producer.Icon.TinyImage=photo_small.gif
+Producer.Icon.TinyAudio=audio_small.gif
+Producer.Icon.TinyVideo=video_small.gif
+Producer.Icon.TinyText=text_small.gif
+
+#Medium sized icons used at various places
+#
+Producer.Icon.BigImage=photo_big.gif
+Producer.Icon.BigAudio=audio_big.gif
+Producer.Icon.BigVideo=video_big.gif
+Producer.Icon.BigText=text_big.gif
+
+#Icons used for links
+#
+Producer.ExtLinkName=extlink.gif
+Producer.IntLinkName=intlink.gif
+Producer.MailLinkName=maillink.gif
+
+# this is the name of the subdirectory where the image-dir
+# will be linked to.
+#
+Producer.ImageRoot=/img
+
+
+
+################################################
+########### C) DYNAMIC SITE CONFIG #############
+################################################
+
+# the main mir-servlet
+#
+Producer.ActionServlet=/servlet/Mir
+
+# the url of the openposting-servlet
+#
+Producer.OpenAction=https://publish.indymedia.org/nyc/servlet/OpenMir
+
+# the maximum allowed size of an uploaded media file in KB.
+#
+MaxMediaUploadSize=20000
+
+# the maximum number of allowed media items to upload at once.
+#
+ServletModule.OpenIndy.MaxMediaUploadItems=20
+
+# the default number of media items to upload at once
+#
+ServletModule.OpenIndy.DefaultMediaUploadItems=1
+
+
+######################
+# PDF configurations #
+######################
+
+# the following lines are used to construct PDFs on the fly from one or more articles
+# for the moment, if you want to change anything else about your pdfs, you
+# will have to learn some java!
+#
+# keep in mind that there may not be enough room for all the text you enter as the
+# value of one these options, if text doesn't appear, the only easy thing to do is
+# use less text!
+#
+
+# a single line of big text which will appear at the top of the first page of all generated pdfs
+#
+PDF.Title=NYC INDYMEDIA
+
+# about two lines of small text which will appear at the bottom of every page
+#
+PDF.Footer=Mir-CMS PDF-Newsletter.  Content is good, and free to use for non-commercial purposes under the Open Content license. If you have questions, email someone.
+
+# the size paper your target audience will likely have in their printers.
+# pick one of A4 or LETTER
+#
+PDF.PageSize=A4
+
+################################################
+############ D) DATABASE CONFIG   ##############
+################################################
+
+# specify your database
+#
+Database.Name=nyc
+Database.Username=nyc
+Database.Password=nyc
+
+Database.Host=localhost
+Database.Port=5432
+Database.Driver=org.postgresql.Driver
+
+
+############################################
+# encoding configuration                   #
+############################################
+
+# The default encoding charset used in the written html files as well
+# as the dynamic output html.
+Mir.DefaultHTMLCharset=UTF-8
+
+# The java equivalent of Mir.DefaultHTMLCharset
+Mir.DefaultEncoding=UTF8
diff --git a/etc/config.properties-dist b/etc/config.properties-dist
new file mode 100755 (executable)
index 0000000..a3a1970
--- /dev/null
@@ -0,0 +1,329 @@
+#
+# Sample config for Mir
+# by Matthias <mjordan@code-fu.de> 2001-09-12
+# reorganized by <init@nadir.org>  2003-02-12
+#
+# The Mir software realizes a semi-dynamic web service:
+# The web server that is accessed by readers has pure static
+# pages. These pages are generated by the Mir software that
+# consists of a collection of Java servlets and HTML templates.
+#
+# Mir uses a database server to store the data that is needed to
+# build the static site.
+# So there are basically three parts in this config file:
+#
+# a) general & admin setup
+# b) static site config
+# c) dynamic site
+# d) database config
+#
+# edit this to suit your needs
+# After editing this file, two steps need to be taken to make the changes effective:
+#   1. ant has to be invoked.
+#   2. tomcat needs to be restarted.
+#
+# This file only contains the properties that are most often changed. To view all
+# possible config values, refer to the file default.properties, located in the
+# source directory. Don't change settings in default.properties however, instead
+# use this file.
+#
+# Note: for filename values, by default, files are used relative to the servlet's
+# WEB-INF directory.
+#
+# The setup uses the following assumptions:
+# The URL to reach the site is http://mir.someserver.org
+# The StorageRoot of this URL is /var/www/project/site/
+# All produced pages and media are located below this directory.
+
+################################################
+############    A) GENERAL SETUP  ##############
+################################################
+
+# mir/project an contact information
+# for display on the site
+#
+Mir.Name=mir.someserver.org
+Mir.Shortname=mir
+
+Mir.Contact-email.address=mir-project@somemailserver.org
+Mir.Contact-email.name=mir-project mailinglist
+
+Mir.Tech-email.address=mir-admins@somemailserver.org
+Mir.Tech-email.name=mir-admins mailinglist
+
+Mir.Public-email.address=project@somemailserver.org
+Mir.Public-email.name=project mailinglist
+
+# Default timezone to display times in in admin, producers
+# use CET for Central European Time (Paris, Amsterdam)
+# more timezones here: http://www.postgresql.org/docs/7.2/static/timezones.html
+#
+Mir.DefaultTimezone= UTC
+
+# Default date/time format
+# For the syntax of the format, refer to
+# http://java.sun.com/j2se/1.3/docs/api/java/text/SimpleDateFormat.html
+Mir.DefaultDateTimeFormat = yyyy-MM-dd HH:mm
+
+# For missing values, the FallbackLanguage is used as default
+#
+Mir.Admin.FallbackLanguage=en
+
+#################################
+# admin interface configuration #
+#################################
+
+# Settings for the admin login:
+# If the default language is left empty, it will set the accept-language of
+# the client browser as the default.
+#
+Mir.Login.DefaultLanguage=en
+Mir.Login.Languages=en;de;fr;nl;es;pt;eu;sv;tr;zh;gz
+
+# Show who's logged in?
+#
+Mir.Admin.ShowLoggedinUsers=1
+
+# enable deletion of comments/articles?
+#
+Mir.Localizer.Admin.AllowDeleteComment=1
+Mir.Localizer.Admin.AllowDeleteArticle=1
+
+#######################
+# automated producers #
+#######################
+
+# Which producers need to be called after an article is posted
+#
+Mir.Localizer.OpenPosting.ContentProducers= \
+media.new;articles.changed;startpage.generate;synchronization.run
+
+# Which producers need to be called after a comment is posted
+#
+Mir.Localizer.OpenPosting.CommentProducers= \
+articles.changed;synchronization.run
+
+# Which producers need to be called after the "produce all new" link is clicked from admin
+#
+Mir.Localizer.Producer.AllNewProducers= \
+media.new;articles.changed;startpage.run;synchronization.run
+
+#########
+# rsync #
+#########
+
+#use rsync to mirror the website to a remote-host
+#
+Rsync=no
+Rsync.Script.Path=/var/www/bin/rsync-copy.sh
+
+
+###################
+# FileEdit module #
+###################
+
+# for extra flexibility editors can edit text-files from within the admin-interface
+# these files can then be included in webpages using SSI as footer or announcement-box...
+#
+# a list of directories to edit
+# format:
+#      <name>:<path>:<file filter>:<0|1 (recursion off or on)> [, ....]
+#
+ServletModule.FileEdit.Configuration= \
+  includes:/var/www/project/site/includes:.*\\.inc:1
+
+################################################
+###########  B) STATIC SITE CONFIG #############
+################################################
+
+# the url of the static site
+# on the machine where mir runs on
+#
+Producer.ProductionHost=http://mir.someserver.org
+
+# the url of the public site
+# only different from ProductionHost if pages are copied to
+# one ore more mirror-servers for delivery
+#
+Producer.PublicationHost=http://mir.someserver.org
+
+# Produrce.StorageRoot is the directory, in which
+# the generated HTML pages will be stored
+#
+Producer.StorageRoot=/var/www/project/site/
+
+# use this property only if the pages are NOT produced under the docRoot
+# of the webserver. all links in the produced pages are prepended
+# with Producer.DocRoot
+#
+Producer.DocRoot=
+
+
+#####################
+# media server URLs #
+#####################
+
+# for better performance or load-sharing
+# images/media can be copied to (and served from) different servers
+# only in this case image- and medialinks need different URLs.
+
+# the url of the video-server
+#
+Producer.Video.Host=http://mir.someserver.org/video
+
+# the url of the audio-server
+#
+Producer.Audio.Host=http://mir.someserver.org/audio
+
+# the url of the image-server
+#
+Producer.Image.Host=http://mir.someserver.org/images
+
+# the url of the media-server
+#
+Producer.Media.Host=http://mir.someserver.org/media
+
+# the url of the real-media-server
+#
+Producer.RealMedia.Host=rtsp://some.streamingmedia.server/somedir/
+
+
+
+############################################
+# image/media specific storage directories #
+############################################
+
+# absolute directory, where the images are saved
+#
+Producer.Image.Path=/var/www/project/site/images/
+
+
+# absolute directory, where the media files are saved
+#
+Producer.Media.Path=/var/www/project/site/media
+
+# absolute directory, where the realmedia data files(ra and rm) are saved
+# the ram files which point to the RealMedia.Host get saved in the regular Media dir
+# this should make rsyncing to a separate streaming server much easier
+#
+Producer.RealMedia.Path=/var/www/project/site/rtsp
+
+# mir creates a small thumbnail-icon for each image posted
+# relativ directory, where the thumbnails will be saved
+#
+Producer.Image.IconPath=/icon
+
+
+####################
+# media-type-icons #
+####################
+
+# by default they are stored in the webservers [docRoot]/img directory
+# they are distibuted with the mir-source (etc/producer/images)
+# use the "staticimages.generate" producer once to copy them in place
+#
+
+# Tiny Icons for the media types on the newswire summary.
+# (right hand side of start page)
+#
+Producer.Icon.TinyImage=photo_small.gif
+Producer.Icon.TinyAudio=audio_small.gif
+Producer.Icon.TinyVideo=video_small.gif
+Producer.Icon.TinyText=text_small.gif
+
+#Medium sized icons used at various places
+#
+Producer.Icon.BigImage=photo_big.gif
+Producer.Icon.BigAudio=audio_big.gif
+Producer.Icon.BigVideo=video_big.gif
+Producer.Icon.BigText=text_big.gif
+
+#Icons used for links
+#
+Producer.ExtLinkName=extlink.gif
+Producer.IntLinkName=intlink.gif
+Producer.MailLinkName=maillink.gif
+
+# this is the name of the subdirectory where the image-dir
+# will be linked to.
+#
+Producer.ImageRoot=/img
+
+
+
+################################################
+########### C) DYNAMIC SITE CONFIG #############
+################################################
+
+# the main mir-servlet
+#
+Producer.ActionServlet=/servlet/Mir
+
+# the url of the openposting-servlet
+#
+Producer.OpenAction=http://mir.someserver.org/servlet/OpenMir
+
+# the maximum allowed size of an uploaded media file in KB.
+#
+MaxMediaUploadSize=20000
+
+# the maximum number of allowed media items to upload at once.
+#
+ServletModule.OpenIndy.MaxMediaUploadItems=20
+
+# the default number of media items to upload at once
+#
+ServletModule.OpenIndy.DefaultMediaUploadItems=1
+
+
+######################
+# PDF configurations #
+######################
+
+# the following lines are used to construct PDFs on the fly from one or more articles
+# for the moment, if you want to change anything else about your pdfs, you
+# will have to learn some java!
+#
+# keep in mind that there may not be enough room for all the text you enter as the
+# value of one these options, if text doesn't appear, the only easy thing to do is
+# use less text!
+#
+
+# a single line of big text which will appear at the top of the first page of all generated pdfs
+#
+PDF.Title=SOME MIR-SITE
+
+# about two lines of small text which will appear at the bottom of every page
+#
+PDF.Footer=Mir-CMS PDF-Newsletter.  Content is good, and free to use for non-commercial purposes under the Open Content license. If you have questions, email someone.
+
+# the size paper your target audience will likely have in their printers.
+# pick one of A4 or LETTER
+#
+PDF.PageSize=A4
+
+################################################
+############ D) DATABASE CONFIG   ##############
+################################################
+
+# specify your database
+#
+Database.Name=Mir
+Database.Username=postgres
+Database.Password=
+
+Database.Host=localhost
+Database.Port=5432
+Database.Driver=org.postgresql.Driver
+
+
+############################################
+# encoding configuration                   #
+############################################
+
+# The default encoding charset used in the written html files as well
+# as the dynamic output html.
+Mir.DefaultHTMLCharset=UTF-8
+
+# The java equivalent of Mir.DefaultHTMLCharset
+Mir.DefaultEncoding=UTF8
diff --git a/etc/extralib/README b/etc/extralib/README
new file mode 100755 (executable)
index 0000000..d43e611
--- /dev/null
@@ -0,0 +1 @@
+This directory is for local jar files.
diff --git a/etc/extrasource/NYCAdminInterfaceLocalizer.java b/etc/extrasource/NYCAdminInterfaceLocalizer.java
new file mode 100755 (executable)
index 0000000..7175dcc
--- /dev/null
@@ -0,0 +1,33 @@
+
+import mircoders.localizer.MirLocalizerExc;
+import mircoders.localizer.MirLocalizerFailure;
+import mircoders.localizer.basic.MirBasicAdminInterfaceLocalizer;
+import mircoders.module.ModuleArticleType;
+import mircoders.storage.DatabaseArticleType;
+
+public class NYCAdminInterfaceLocalizer extends MirBasicAdminInterfaceLocalizer {
+  public NYCAdminInterfaceLocalizer() throws MirLocalizerFailure, MirLocalizerExc {
+
+    super();
+
+    try {
+      ModuleArticleType module = new ModuleArticleType();
+      addSimpleArticleOperation(new ModifyArticleFieldOperation("unhide", "is_published", "1", true));
+      addSimpleArticleOperation(new ModifyArticleFieldOperation("hide", "is_published", "0", true));
+
+      addSimpleArticleOperation(new ChangeArticleFieldOperation("promote", "to_article_type",
+          module.articleTypeIdForName("newswire"), module.articleTypeIdForName("promotednewswire"), true));
+      addSimpleArticleOperation(new ChangeArticleFieldOperation("demote", "to_article_type",
+          module.articleTypeIdForName("promotednewswire"), module.articleTypeIdForName("newswire"), true));
+      addSimpleArticleOperation(new ChangeArticleFieldOperation("promote", "to_article_type",
+          module.articleTypeIdForName("communityrssarticle"), module.articleTypeIdForName("promotedcommunityarticle"), true));
+      addSimpleArticleOperation(new ChangeArticleFieldOperation("demote", "to_article_type",
+          module.articleTypeIdForName("promotedcommunityarticle"), module.articleTypeIdForName("communityrssarticle"), true));
+    }
+    catch (Throwable t) {
+      throw new MirLocalizerFailure(t);
+    }
+  }
+}
+
+
diff --git a/etc/extrasource/NYCLocalizer.java b/etc/extrasource/NYCLocalizer.java
new file mode 100755 (executable)
index 0000000..b3d8114
--- /dev/null
@@ -0,0 +1,28 @@
+import mircoders.localizer.*;
+import mircoders.localizer.MirDataModelLocalizer;
+import mircoders.localizer.MirLocalizerExc;
+import mircoders.localizer.MirLocalizerFailure;
+import mircoders.localizer.MirOpenPostingLocalizer;
+import mircoders.localizer.basic.MirBasicLocalizer;
+
+public class NYCLocalizer extends MirBasicLocalizer {
+    /*  public MirDataModelLocalizer dataModel() throws MirLocalizerFailure, MirLocalizerExc {
+    return new EarthDataModelLocalizer();
+  };
+    */
+    /*
+  public MirOpenPostingLocalizer openPostings() throws MirLocalizerFailure, MirLocalizerExc {
+    return new EarthOpenPostingLocalizer();
+  }
+    */
+  public MirAdminInterfaceLocalizer adminInterface() throws MirLocalizerFailure, MirLocalizerExc {
+    return new NYCAdminInterfaceLocalizer();
+  };
+    /*
+  public MirProducerAssistantLocalizer producerAssistant() throws MirLocalizerFailure, MirLocalizerExc {
+    return new EarthProducerAssistantLocalizer();
+  };
+    */
+}
+
+
diff --git a/etc/extrasource/README b/etc/extrasource/README
new file mode 100755 (executable)
index 0000000..ac03eae
--- /dev/null
@@ -0,0 +1 @@
+This directory is for local source files.
diff --git a/etc/log4j.properties b/etc/log4j.properties
new file mode 100755 (executable)
index 0000000..19b599a
--- /dev/null
@@ -0,0 +1,97 @@
+log4j.rootLogger= ERROR, A1
+log4j.logger.Utility= INFO, UtilityA
+log4j.additivity.Utility=false
+log4j.logger.Global= INFO, GlobalA
+log4j.additivity.Global=false
+log4j.logger.Servlet= INFO, ServletA
+log4j.additivity.Servlet=false
+log4j.logger.Database= WARN, DatabaseA
+log4j.additivity.Database=false
+log4j.logger.Entity= INFO, EntityA
+log4j.additivity.Entity=false
+log4j.logger.Media= INFO, MediaA
+log4j.additivity.Media=false
+log4j.logger.Producer= INFO, ProducerA
+log4j.additivity.Producer=false
+log4j.logger.ServletModule= INFO, ServletModuleA
+log4j.additivity.ServletModule=false
+log4j.logger.Module= INFO, ModuleA
+log4j.additivity.Module=false
+log4j.logger.Localizer= INFO, LocalizerA 
+log4j.additivity.Localizer=false
+log4j.logger.Generator= INFO, GeneratorA
+log4j.additivity.Generator=false
+log4j.logger.PDFGenerator= INFO, PDFGeneratorA
+log4j.additivity.PDFGenerator=false
+log4j.logger.AdminUsage= INFO, AdminUsageA
+log4j.additivity.AdminUsage=false
+
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.DatabaseA=org.apache.log4j.FileAppender
+log4j.appender.DatabaseA.File=${log.home}/database.log
+log4j.appender.DatabaseA.layout=org.apache.log4j.PatternLayout
+log4j.appender.DatabaseA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.EntityA=org.apache.log4j.FileAppender
+log4j.appender.EntityA.File=${log.home}/entity.log
+log4j.appender.EntityA.layout=org.apache.log4j.PatternLayout
+log4j.appender.EntityA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.ServletA=org.apache.log4j.FileAppender
+log4j.appender.ServletA.File=${log.home}/servlet.log
+log4j.appender.ServletA.layout=org.apache.log4j.PatternLayout
+log4j.appender.ServletA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.MediaA=org.apache.log4j.FileAppender
+log4j.appender.MediaA.File=${log.home}/media.log
+log4j.appender.MediaA.layout=org.apache.log4j.PatternLayout
+log4j.appender.MediaA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.ProducerA=org.apache.log4j.FileAppender
+log4j.appender.ProducerA.File=${log.home}/producer.log
+log4j.appender.ProducerA.layout=org.apache.log4j.PatternLayout
+log4j.appender.ProducerA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.ServletModuleA=org.apache.log4j.FileAppender
+log4j.appender.ServletModuleA.File=${log.home}/servletmodule.log
+log4j.appender.ServletModuleA.layout=org.apache.log4j.PatternLayout
+log4j.appender.ServletModuleA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.ModuleA=org.apache.log4j.FileAppender
+log4j.appender.ModuleA.File=${log.home}/module.log
+log4j.appender.ModuleA.layout=org.apache.log4j.PatternLayout
+log4j.appender.ModuleA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.LocalizerA=org.apache.log4j.FileAppender
+log4j.appender.LocalizerA.File=${log.home}/localizer.log
+log4j.appender.LocalizerA.layout=org.apache.log4j.PatternLayout
+log4j.appender.LocalizerA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.GeneratorA=org.apache.log4j.FileAppender
+log4j.appender.GeneratorA.File=${log.home}/template.log
+log4j.appender.GeneratorA.layout=org.apache.log4j.PatternLayout
+log4j.appender.GeneratorA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.GlobalA=org.apache.log4j.FileAppender
+log4j.appender.GlobalA.File=${log.home}/global.log
+log4j.appender.GlobalA.layout=org.apache.log4j.PatternLayout
+log4j.appender.GlobalA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.UtilityA=org.apache.log4j.FileAppender
+log4j.appender.UtilityA.File=${log.home}/utility.log
+log4j.appender.UtilityA.layout=org.apache.log4j.PatternLayout
+log4j.appender.UtilityA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.PDFGeneratorA=org.apache.log4j.FileAppender
+log4j.appender.PDFGeneratorA.File=${log.home}/pdf.log
+log4j.appender.PDFGeneratorA.layout=org.apache.log4j.PatternLayout
+log4j.appender.PDFGeneratorA.layout.ConversionPattern=%d [%p] %c %x %m%n
+
+log4j.appender.AdminUsageA=org.apache.log4j.FileAppender
+log4j.appender.AdminUsageA.File=${log.home}/adminusage.log
+log4j.appender.AdminUsageA.layout=org.apache.log4j.PatternLayout
+log4j.appender.AdminUsageA.layout.ConversionPattern=%d %m%n
+
diff --git a/etc/open/disclaimer.inc.de b/etc/open/disclaimer.inc.de
new file mode 100755 (executable)
index 0000000..d28d2ea
--- /dev/null
@@ -0,0 +1,108 @@
+<h3>Kurze Anleitung zum Posten eines Beitrages bei de.indymedia.org</h3>
+
+<b>I</b>ndymedia ist ein basisdemokratischer Nachrichtenkanal.
+Wir arbeiten aus Liebe und aus Respekt gegenüber Menschen,
+die sich für eine bessere, lebenswertere Welt engagieren.
+Bei Indymedia kann grundsätzlich JedeR Texte, Videos, Audios oder Fotos
+zu politischen oder sozialen Themen veröffentlichen.
+<br><br>
+
+Indymedia will vor allem die Möglichkeit geben,
+subjektive Stellungnahmen verschiedenster Menschen
+'auf der Strasse' über politische Ereignisse oder aus
+der alltäglichen Lebenswelt zu veröffentlichen. Zudem
+ist Indymedia eine Plattform für Hintergrundberichte,
+die andere Hintergründe als kommerzielle Medien aufzeigen.
+<br><br>
+
+Um indymedia als Plattform für <b>eigene</b>
+Berichterstattung zu konturieren, werden bestimmte
+Beiträge nicht auf die Startseite gestellt. Dazu gehören:
+
+
+<ul>
+<li>
+Termine und Demoaufrufe [ Weil wir wissen, dass diese für die Mobilisierung
+sehr wichtig sind, verlinken wir zu verschiedenen Internetprojekten, auf
+denen Ihr gute Terminsammlungen findet ] Bei angelaufenen Kampagnen werden
+regelmäßig Termine und Aufrufe in die Mittelspalten-Texte als Links gesetzt.
+
+
+<li>
+schon an anderen Stellen veröffentlichte Texte und aus kommerziellen Medien
+kopierte Texte<br>
+[ hierbei sind Übersetzungen von Texten und Meldungen
+von hier kaum zugänglichen Medien eine Ausnahme ]
+
+
+<li>Gruppenstatements, Presseerklärungen, Diskussionspapiere, Massenmails
+<br>
+
+[auch hier geht es um die Zugänglichkeit von Texten. Beiträge von
+Gruppen, die schon auf zahlreichen anderen Internet-Seiten oder in
+Zeitschriften veröffentlicht wurden, werden nicht auf die Startseite
+gestellt, weil es nicht der Ansatz von indymedia ist alles
+irgendwie relevante auf der Seite zu versammeln, sondern eine
+Plattform für eigene  Berichterstattung zu sein. Unter eigener
+Berichtserstattung verstehen wir allerdings Presseerklärungen
+von Kleingruppen oder Diskussionspapiere einzelner.
+
+
+<li>
+superkurze Meldungen:
+
+
+<li>
+reine Kommentare ohne Nachrichtenwert<br>
+[ Zusätzlich zu den selbstverfassten Beiträgen, gibt es bei indymedia
+noch die Möglichkeit über Artikel zu diskutieren.
+Das könnt Ihr unter dem jeweiligen Artikel - einfach auf
+"Kommentar eingeben" klicken ]
+
+
+<li>
+Beiträge von hierarchischen Gruppen und Parteien
+
+
+<li>
+Außerdem gibt es Beiträge, die sofort in ein
+Müllarchiv kommen:
+<ul>
+  <li>Diskriminierender oder menschenverachtender Inhalt
+  <li>Offensichtlicher Spam
+</ul>
+</ul>
+
+<br><br>
+Was mit Eurem Beitrag passiert, lest Ihr am besten
+unter <a href="http://de.indymedia.org/static/ms.html" target="_blank">Grundsätze</a> und <a href="http://de.indymedia.org/static/moderation.html" target="_blank">Moderation</a> nach. Hier eine kurze Zusammenfassung:
+<br><br>
+
+Alle Beiträge werden sofort unzensiert veröffentlicht.<br>
+Allerdings erscheinen sie dann nicht gleich auf der
+Startseite, sondern auf der Open-Posting-Seite
+&quot;<a href="http://de.indymedia.org/open.html" target="_blank">alle Beiträge</a>&quot;.<br>
+Dort werden sie von Moderationskollektiven
+gelesen. Entsprechen sie den indymedia-Grundsätzen,
+erscheinen sie im Newswire der Startseite.
+In die Mittelspalte nehmen wir in der Regel Beiträge,
+die einen guten Überblick über ein aktuelles Thema geben.
+Diese Artikel werden von uns (möglichs in Absprache mit der AutorIn) auch leicht redigiert:
+Wir korrigieren Rechtschreibfehler, versuchen unverständliche
+Stellen zu glätten und setzen Links hinein.<br>
+Verlautbarungen,
+Texte, die keinen politischen oder sozialen Inhalt haben,
+reine Diskussionsbeiträge und Termine bleiben im Open Posting.
+Texte mit menschenverachtendem Inhalt oder Spam kommen ins
+Müllarchiv. Damit sind sie nicht mehr einsehbar. Wer
+sie trotzdem lesen will, kann sie per e-mail anfordern.
+Diese Moderationskriterien sind Resultat eines weltweiten
+Diskussionsprozesses über indymedia und werden ständig neu
+diskutiert und überarbeitet.
+<br><br>
+
+<b>Urheberrecht: </b>Unserer Auffassung nach sollten
+Beiträge, die an diese Site geschickt werden, frei zur
+nicht-kommerziellen Wiederverwertung sein. Wenn Du
+nicht möchtest, dass das für Deinen Beitrag zutrifft,
+dann nenne Deine Konditionen in der Zusammenfassung.
\ No newline at end of file
diff --git a/etc/open/donearticle.template b/etc/open/donearticle.template
new file mode 100755 (executable)
index 0000000..d931396
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
+
+<html>
+<head>
+  <title>${lang("postingdone.htmltitle")}</title> 
+  <style type="text/css" media="all">@import "forms.css";</style>
+</head>
+
+<body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" bgcolor="#dddddd">
+
+  <table cellspacing="0" cellpadding="0" width="100%">
+    <tr>
+      <td colspan="3" width="100%">&nbsp;</td>
+    </tr>
+    <tr>
+      <td width="20%" bgcolor="#ff9966">
+        &nbsp;&nbsp;<a href="${config["Producer.ProductionHost"]}/index.shtml" class="startlink">start &gt;&gt;</a>
+      </td>
+      <td width="60%" bgcolor="#ff9966" class="pad4x">
+        <span id="title"><b>${lang("postingdone.title")}</b></span>
+      </td>
+      <td width="20%">&nbsp;</td>
+    </tr>
+    <tr>
+      <td colspan="3" class="pad4x"><span class="size2px">&nbsp;</span></td>
+    </tr>
+    <tr>
+      <td align="right">&nbsp;</td>
+      <td class="pad5L">
+        <br>
+                ${lang("postingdone.info")}<br>
+        <br>
+        <em>${lang("commentdone.stay_calm")}</em><br>
+        <br>
+      </td>
+      <td>&nbsp;</td>
+    </tr>
+    
+    <tr>
+      <td align="right">&nbsp;</td>
+      <td class="pad5Lx" bgcolor="#eecc99">
+        <if referer>
+          <a href="${referer}"><b>${lang("postingdone.back")} &gt;&gt;</b></a>
+        </if>
+      </td>
+      <td bgcolor="#eecc99">&nbsp;</td>
+    </tr>
+    <tr>
+      <td colspan="3" class="pad2x">&nbsp;<br><br></td>
+    </tr>
+  </table>
+
+
+</body>
+</html>
diff --git a/etc/open/donecomment.template b/etc/open/donecomment.template
new file mode 100755 (executable)
index 0000000..1d38bf2
--- /dev/null
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+  <title>${lang("commentdone.htmltitle")}</title>
+</head>
+
+<body bgcolor="White" text="Black" link="#006600" vlink="#009900" alink="Red">
+
+<table width="100%" border="0" cellspacing="0" cellpadding="10">
+  <tr>
+    <td valign="top" align="center" bgcolor="#663399">
+      <font color="White"><b>${lang("commentdone.thanks")}</b></font
+    </td>
+  </tr>
+  <tr>
+    <td bgcolor="#cccccc" align="center">
+
+        <br>
+                ${lang("commentdone.wait")}
+        <br>
+                ${lang("commentdone.criteria")}
+        <br>
+        <em>${lang("commentdone.stay_calm")}</em><br>
+        <br>
+
+    </td>
+  </tr>
+  <tr>
+    <td valign="top" align="center" bgcolor="#663399">
+      <a href="${referer}"><font color="White"><b>&gt;&gt; ${lang("commentdone.back")}</b></font></a>
+    </td>
+  </tr>
+</table>
+
+</body>
+</html>
diff --git a/etc/open/donetranslation.template b/etc/open/donetranslation.template
new file mode 100755 (executable)
index 0000000..5041125
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+  <title>${lang("postingdone.htmltitle")}</title> 
+  <style type="text/css" media="all">@import "forms.css";</style>
+</head>
+
+<body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" bgcolor="#dddddd">
+
+  <table cellspacing="0" cellpadding="0" width="100%">
+    <tr>
+      <td colspan="3" width="100%">&nbsp;</td>
+    </tr>
+    <tr>
+      <td width="20%" bgcolor="#ff9966">
+        &nbsp;&nbsp;<a href="${config["Producer.ProductionHost"]}/index.shtml" class="startlink">start &gt;&gt;</a>
+      </td>
+      <td width="60%" bgcolor="#ff9966" class="pad4x">
+        <span id="title"><b>${lang("translation.donetitle")}</b></span>
+      </td>
+      <td width="20%">&nbsp;</td>
+    </tr>
+    <tr>
+      <td colspan="3" class="pad4x"><span class="size2px">&nbsp;</span></td>
+    </tr>
+    <tr>
+      <td align="right">&nbsp;</td>
+      <td class="pad5L">
+        <br>
+                ${lang("translationdone.info")}<br>
+        <br>
+        <em>${lang("commentdone.stay_calm")}</em><br>
+        <br>
+      </td>
+      <td>&nbsp;</td>
+    </tr>
+    
+    <tr>
+      <td align="right">&nbsp;</td>
+      <td class="pad5Lx" bgcolor="#eecc99">
+        <if referer>
+          <a href="${referer}"><b>${lang("postingdone.back")} &gt;&gt;</b></a>
+        </if>
+      </td>
+      <td bgcolor="#eecc99">&nbsp;</td>
+    </tr>
+    <tr>
+      <td colspan="3" class="pad2x">&nbsp;<br><br></td>
+    </tr>
+  </table>
+
+
+</body>
+</html>
diff --git a/etc/open/dupearticle.template b/etc/open/dupearticle.template
new file mode 100755 (executable)
index 0000000..cac7fcb
--- /dev/null
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+  <title>${lang("postingdupe.htmltitle")}</title> 
+  <style type="text/css" media="all">@import "forms.css";</style>
+</head>
+
+<body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" bgcolor="#dddddd">
+
+  <table cellspacing="0" cellpadding="0" width="100%">
+    <tr>
+      <td colspan="3" width="100%">&nbsp;</td>
+    </tr>
+    <tr>
+      <td width="20%" bgcolor="#cc3333">
+        &nbsp;&nbsp;<a href="${config["Producer.ProductionHost]}/index.shtml" class="startlink">start &gt;&gt;</a>
+      </td>
+      <td width="60%" bgcolor="#cc3333" class="pad4x">
+        <span id="title"><b>${lang("postingdupe.title")}</b></span>
+      </td>
+      <td width="20%">&nbsp;</td>
+    </tr>
+    <tr>
+      <td colspan="3" class="pad4x"><span class="size2px">&nbsp;</span></td>
+    </tr>
+    <tr>
+      <td align="right">&nbsp;</td>
+      <td class="pad5L">
+        <br>
+                ${lang("postingdupe.explanation")}<br>
+        <br>
+        <em><font color="#cc3333">${lang("postingdupe.no_panic")}</font></em><br>
+        <br>
+      </td>
+      <td>&nbsp;</td>
+    </tr>
+    
+    <tr>
+      <td align="right">&nbsp;</td>
+      <td class="pad5Lx" bgcolor="#eecc99">
+        <a href="javascript:history.go(-2)"><b>${lang("postingdupe.back")} &gt;&gt;</b></a>
+      </td>
+      <td bgcolor="#eecc99">&nbsp;</td>
+    </tr>
+    <tr>
+      <td colspan="3" class="pad2x">&nbsp;<br><br></td>
+    </tr>
+  </table>
+
+
+</body>
+</html>
diff --git a/etc/open/dupecomment.template b/etc/open/dupecomment.template
new file mode 100755 (executable)
index 0000000..3f44874
--- /dev/null
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+  <title>${lang("commentdupe.htmltitle")}</title>
+</head>
+
+<body bgcolor="White" text="Black" link="white" vlink="#009900" alink="Red">
+
+<table width="100%" border="0" cellspacing="0" cellpadding="10">
+  <tr>
+    <td valign="top" align="center" bgcolor="#663399">
+      <font color="White"><b>
+        ${lang("commentdupe.title")}
+      </b></font
+    </td>
+  </tr>
+  <tr>
+    <td bgcolor="003300" width=70%>
+      <font color="White">
+        <br>
+                    ${lang("commentdupe.explanation")}
+        <br>
+        <center><em>${lang("commentdupe.no_panic")}</em></center><br>
+        <br>
+      </font>
+    </td>
+  </tr>
+  <tr>
+    <td valign="top" align="center" bgcolor="#663399">
+      <a href="javascript:history.go(-2)"><font color="White"><b>&gt;&gt; ${lang("commentdupe.back")}</b></font></a>
+    </td>
+  </tr>
+</table>
+
+</body>
+</html>
diff --git a/etc/open/editarticle.template b/etc/open/editarticle.template
new file mode 100755 (executable)
index 0000000..5bd19d7
--- /dev/null
@@ -0,0 +1,501 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//DE">
+<html>
+<head>
+<title>${lang("posting.htmltitle")}</title>
+<style type="text/css"> body {background-image: none;} </style>
+
+
+<style type="text/css">
+<!--
+
+body {
+margin: 6px; background: #dddddd ;
+}
+h1, h2, h3, h4, h5, h6, p, li, dt, dd, div, td, blockquote
+{
+font-family:arial, helvetica, sans-serif;
+}
+
+.pformbox
+{
+border: none;
+margin: none;
+padding-left: 10px;
+padding-right: 10px;
+padding-bottom: 0px;
+padding-top: 0px;
+}
+
+h1 { padding-bottom: 0px; margin-bottom: 0px;}
+h2
+{
+padding-bottom: 0px;
+margin-bottom: 0px;
+padding: 2px;
+border: none;
+margin: none;
+border-top: 1px solid black;
+border-left: 1px solid black;
+border-right: 1px solid black;
+background-color: #003366;
+color: white;
+}
+h3 { padding-bottom: 0px; margin-bottom: 0px;}
+h4 { padding-bottom: 0px; margin-bottom: 0px;}
+
+.pdiscl
+{
+padding: 4px;
+margin-top: 6px;
+margin-bottom: 6px;
+
+border-color: #FFF;
+border-width: 2px;
+border-style: solid;
+}
+
+.pformstep01
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep02
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep03
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep04
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep05
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep06
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FFFFFF;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+
+input.psubmit
+{
+padding: 5px;
+border: 2px solid green;
+background-color: #6F0;
+}
+
+input.preset
+{
+padding: 5px;
+border: 2px solid red;
+background-color: #F96;
+}
+
+.pbuttons {
+text-align: right;
+}
+
+input
+{
+background-color: #efefef;
+}
+
+textarea
+{
+background-color: #efefef;
+}
+
+
+input.preq
+{
+background-color: #ffffff;
+}
+textarea.preq
+{
+background-color: #ffffff;
+}
+
+.error {
+color: red;
+}
+
+-->
+</style>
+
+</head>
+
+<body bgcolor="#dddddd">
+
+<function showErrors(aField)>
+  <comment>
+    function to display error message at the input box  // occam, 2003-06-09
+  </comment>
+
+  <if errors>
+    <list errors as e>
+      <if e.field==aField>
+        ${lang(e.message + "." + e.field)}
+      </if>
+    </list>
+  </if>
+</function>
+
+    <if errors>
+          Your input had the following errors:<br><br>
+          <list errors as e>
+            <font color="red">
+              <if e.field>
+                ${lang("content."+e.field)}:
+              </if>
+              ${lang(e.message)} <br>
+              <list e.parameters as p>
+                ${utility.prettyEncodeHTML(p)}<br>
+              </list>
+            </font>
+          </list>
+    </if>
+
+
+<comment>
+
+<div class="pdiscl">
+<include "disclaimer.inc.de">
+</div>
+
+</comment>
+
+<div class="pformbox">
+
+<h1>
+${lang("posting.form.title")}
+</h1>
+
+    <if errors>
+<p class="error">${lang("posting.errors")}</p>
+    </if>
+
+<h2>
+${lang("posting.step00")}
+</h2>
+
+<div class="pformstep01">
+${lang("posting.readhowtos")}
+</div>
+<form enctype="multipart/form-data" action="${actionURL}&do=opensession&sessiontype=article" method="post">
+<h2>
+${lang("posting.step01")}
+</h2>
+
+
+
+<div class="pformstep01">
+<h4>
+${lang("posting.nr_of_media")}
+</h4>
+<p>
+${lang("posting.nr_of_media.info")}
+</p>
+<p>
+<input type="text" name="nrmediaitems" size="8" value="${utility.encodeHTML(nrmediaitems)}"> 
+<input type="submit" value="${lang("posting.nr_of_media.submit")}">
+</p>
+</div>
+
+<if password>
+<div class="ppassword">
+${password}
+
+<p>${lang("posting.password")}</p>
+
+<p><input type="text" name="password" size="10">
+</if>
+
+<h2>
+${lang("posting.step02")}
+</h2>
+
+<div class="pformstep02">
+
+<!-- TITEL -->
+<h4>
+${lang("posting.title")}
+</h4>
+<p>
+<small>${lang("posting.title.info")}</small>
+</p>
+<p>
+<input type="text" class="preq" name="title" size="45" maxlength="45" value="${utility.encodeHTML(title)}">
+<if errors>
+<big class="error"><call showErrors("title")></big>
+<else>
+<small><strong>(${lang("required")})</strong></small>
+</if>
+</p>
+
+<!-- TOPIC -->
+<h4>
+${lang("posting.topic")}
+</h4>
+<p>
+${lang("posting.topic.info")}
+</p>
+<select name="to_topic" size="10" multiple>
+<list topics as t>
+<option value="${t.id}" <list to_topic as to><if (t.id == to)>selected</if></list>>${t.title}</option>
+</list>
+</select>
+<small>(${lang("optional")})</small>
+
+<!-- AUTOR -->
+<h4>
+${lang("posting.author")}
+</h4>
+
+<input type="text" class="preq" name="creator" value="${utility.encodeHTML(creator)}" size="45" maxlength="45"> 
+
+<if errors>
+<big class="error"><call showErrors("creator")></big>
+<else>
+<small><strong>(${lang("required")})</strong></small>
+</if>
+
+<!-- ABSTRACT -->
+<h4>
+${lang("posting.abstract")}
+</h4>
+<p>
+${lang("posting.abstract.info")}
+</p>
+<textarea name="description" class="preq" rows="10" cols="74" wrap=virtual>${utility.encodeHTML(description)}</textarea>
+<if errors>
+<big class="error"><call showErrors("description")></big>
+<else>
+<small><strong>(${lang("required")})</strong></small>
+</if>
+<p>
+<strong>${lang("posting.abstract.constraint")}</strong>
+</p>
+
+</div>
+
+<h2>
+${lang("posting.step03")}
+</h2>
+
+<div class="pformstep03">
+<p>
+${lang("posting.contact.info")}
+</p>
+
+<!--  EMAIL -->
+<h4>
+${lang("posting.email")}
+</h4>
+<input type="text" name="creator_email" size="55" maxlength="80" value="${utility.encodeHTML(creator_email)}">
+<small>(${lang("optional")})</small>
+
+<!-- URL -->
+<h4>
+${lang("posting.url")}
+</h4>
+<input type="text" name="creator_main_url" size="55" maxlength="160" value="${utility.encodeHTML(creator_main_url)}">
+<small>(${lang("optional")})</small>
+
+<!-- ADRESS -->
+<h4>
+${lang("posting.address")}
+</h4>
+<input type="text" name="creator_address" size="55" maxlength="160" value="${utility.encodeHTML(creator_address)}">
+<small>(${lang("optional")})</small>
+
+<!-- PHONE -->
+<h4>
+${lang("posting.phone")}
+</h4>
+<input type="text" name="creator_phone" size="20" maxlength="20" value="${utility.encodeHTML(creator_address)}">
+<small>(${lang("optional")})</small>
+</div>
+
+<h2>
+${lang("posting.step04")}
+</h2>
+
+<div class="pformstep04">
+<!-- LANG -->
+<h4>
+${lang("posting.language")}
+</h4>
+<select name="to_language">
+<list languages as l>
+<option value="${l.id}">${l.name}</option>
+</list>
+</select>
+<small>(${lang("optional")})</small>
+
+<!-- CONTENT -->
+<h4>
+${lang("posting.text")}
+</h4>
+<p>
+${lang("posting.text.info")}
+</p>
+<textarea name="content_data" class="preq" rows="35" cols="74" wrap="soft">${utility.encodeHTML(content_data)}</textarea>
+<if errors>
+<big class="error"><call showErrors("content_data")></big>
+<else>
+<small><strong>(${lang("required")})</strong></small>
+</if>
+<p>${lang("posting.html")}</p>
+<select name="is_html">
+<option value="0" <if is_html!="1">selected</if>>plain text</option>
+<option value="1" <if is_html=="1">selected</if>>html</option>
+</select>
+
+</div>
+
+<h2>
+${lang("posting.step05")}
+</h2>
+<div class="pformstep05">
+
+<h4>
+${lang("posting.media")}
+</h4>
+<p>
+<small>${lang("optional")}</small>
+</p>
+<list attachments as a>
+    <hr>
+    <h4>
+      ${utility.encodeHTML(a.filename)}
+    </h4>
+    <input type="checkbox" name="${a.fieldname}_cancel"> ${lang("posting.media.cancel")}
+
+    <h4>
+      ${lang("posting.media.title")} 
+    </h4>
+    <input type="text" class="preq" name="${a.fieldname}_title" size="40" maxlength="80" value="${utility.encodeHTML(a.title)}">
+</list>
+
+<p>
+${lang("posting.media.info")}
+</p>
+<p>
+${lang("posting.media.howto")}
+</p>
+
+<list mediaitems as m>
+    <hr>
+    <h4>
+    ${lang("posting.media.media")} ${m}
+    </h4>
+    <input type="file" name="media${m}">
+    
+    <h4>
+    ${lang("posting.media.title")} ${m}
+    </h4>
+    <input type="text" class="preq" name="media${m}_title" size="40" maxlength="80" value="">
+</list>
+
+<if config["Localizer.OpenSession.AllowFTPUploads"]!="0">
+  <if config["Localizer.OpenSession.AllowFTPUploadSelection"]!="0" && ftpfiles>
+    <hr>
+    <h4>
+      ${lang("posting.media.ftpmedia")}
+    </h4>
+    <select name="ftpupload">
+      <option value="">&nbsp;</option>
+      <list ftpfiles as f>
+        <option value="${utility.encodeHTML(f)}">${f}</option>
+      </list>
+    </select>
+    
+    <h4>
+      ${lang("posting.media.title")} 
+    </h4>
+    <input type="text" class="preq" name="ftpupload_title" size="40" maxlength="80" value="">
+  <else>
+    <hr>
+    <h4>
+      ${lang("posting.media.ftpmedia")}
+    </h4>
+    <input type="text" name="ftpupload"  size="40" maxlength="80" value="">
+    <h4>
+      ${lang("posting.media.title")} 
+    </h4>
+    <input type="text" class="preq" name="ftpupload_title" size="40" maxlength="80" value="">
+  </if>  
+</if>  
+
+
+</div>
+
+<h2>
+${lang("posting.step06")}
+</h2>
+<div class="pformstep06">
+<p>
+${lang("posting.submit.info")}
+</p>
+<p>
+${lang("posting.criteria")}
+</p>
+<div class="pbuttons">
+<input type="submit" name="post" class="psubmit" value="${lang("posting.submit")}">
+<input type="reset" class="preset" value="${lang("posting.reset")}">
+</div>
+</div>
+</form>
+</div>
+</body>
+</html>
diff --git a/etc/open/editcomment.template b/etc/open/editcomment.template
new file mode 100755 (executable)
index 0000000..dc73ede
--- /dev/null
@@ -0,0 +1,381 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>${lang("comment.htmltitle")}</title>
+
+
+<style type="text/css">
+<!--
+
+body {
+margin: 6px; background: #dddddd ;
+}
+h1, h2, h3, h4, h5, h6, p, li, dt, dd, div, td, blockquote
+{
+font-family:arial, helvetica, sans-serif;
+}
+
+.pformbox
+{
+padding-left: 10px;
+padding-right: 10px;
+padding-bottom: 0px;
+padding-top: 0px;
+}
+
+h1 { padding-bottom: 0px; margin-bottom: 0px;}
+h2
+{
+border: none;
+margin: none;
+padding-bottom: 0px;
+margin-bottom: 0px;
+padding: 2px;
+border-top: 1px solid black;
+border-left: 1px solid black;
+border-right: 1px solid black;
+background-color: #003366;
+color: white;
+}
+h3 { padding-bottom: 0px; margin-bottom: 0px;}
+h4 { padding-bottom: 0px; margin-bottom: 0px; }
+
+.pdiscl
+{
+border: none;
+margin: none;
+padding: 4px;
+margin-top: 6px;
+margin-bottom: 6px;
+
+border-color: #FFF;
+border-width: 2px;
+border-style: solid;
+}
+
+.pformstep01
+{
+border: none;
+margin: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep02
+{
+border: none;
+margin: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+
+.pformstep06
+{
+border: none;
+margin: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #ffffff;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+
+input.psubmit
+{
+padding: 5px;
+border: 2px solid green;
+background-color: #6F0;
+}
+
+input.preset
+{
+padding: 5px;
+border: 2px solid red;
+background-color: #F96;
+}
+
+.pbuttons {
+text-align: right;
+}
+input
+{
+background-color: #efefef;
+}
+
+textarea
+{
+background-color: #efefef;
+}
+
+
+input.preq
+{
+background-color: #ffffff;
+}
+textarea.preq
+{
+background-color: #ffffff;
+}
+
+.error {
+color: red;
+}
+-->
+</style>
+
+</head>
+
+<body bgcolor="#dddddd">
+
+<function showErrors(aField)>
+<comment>
+function to display error message at the input box  // occam, 2003-06-09
+</comment>
+<if errors>
+<list errors as e>
+<if e.field==aField>       
+${lang(e.message + "." + e.field)}
+</if>
+</list>
+</if>
+</function>
+
+<div class="pformbox">
+<h3>
+${lang("comment.header")}
+</h3>
+<p>
+${lang("comment.note")}
+</p>
+
+<h1>
+${lang("comment.formtitle")}
+</h1>
+
+    <if errors>
+          Your input had the following errors:<br><br>
+          <list errors as e>
+            <font color="red">
+              <if e.field>
+                ${lang("content."+e.field)}:
+              </if>
+              ${lang(e.message)} <br>
+              <list e.parameters as p>
+                ${utility.prettyEncodeHTML(p)}<br>
+              </list>
+            </font>
+          </list>
+   </if>
+
+<form enctype="multipart/form-data" action="${actionURL}&do=opensession&sessiontype=comment" method="post">
+<input type="hidden" name="to_media" value="${to_media}">
+
+<h2>
+${lang("posting.step01")}
+</h2>
+<div class="pformstep01">
+
+<!-- TITEL -->
+<h4>
+${lang("comment.title")}
+</h4>
+<input type="text" class="preq" name="title" size="45" maxlength="45" value="${utility.encodeHTML(title)}"> 
+<if errors>
+<big class="error"><call showErrors("title")></big>
+<else>
+<small><strong>(${lang("required")})</strong></small>
+</if>
+
+<!-- AUTHOR -->
+<h4>
+${lang("comment.name")}
+</h4>
+<input type="text" class="preq" name="creator" size="20" maxlength="45" value="${utility.encodeHTML(creator)}">
+<if errors>
+<big class="error"><call showErrors("creator")></big>
+<else>
+<small><strong>(${lang("required")})</strong></small>
+</if>
+
+<!-- CONTENT -->
+<h4>
+${lang("comment.text")}
+</h4>
+<textarea name="description" class="preq" rows="20" cols="74" wrap=virtual>${utility.encodeHTML(description)}</textarea>
+<if errors>
+<big class="error"><call showErrors("description")></big>
+<else>
+<small><strong>(${lang("required")})</strong></small>
+</if>
+</div>
+
+<h2>
+${lang("posting.step02")}
+</h2>
+<div class="pformstep02">
+<!-- EMAIL -->
+<h4>
+${lang("comment.email")}
+</h4>
+<input type="text" name="email" size="30" maxlength="80" value="${utility.encodeHTML(email)}">
+<small>(${lang("optional")})</small>
+
+<!-- URL -->
+<h4>
+${lang("comment.url")}
+</h4>
+<input type="text" name="main_url" size="40" maxlength="160" value="http://">
+<small>(${lang("optional")})</small>
+
+<!-- PHONE -->
+<h4>
+${lang("comment.phone")}
+</h4>
+<input type="text" name="phone" size="30" maxlength="80" value="${utility.encodeHTML(phone)}">
+<small>(${lang("optional")})</small>
+
+<!-- Adress -->
+<h4>
+${lang("comment.address")}
+</h4>
+<input type="text" name="address" size="40" maxlength="160" value="${utility.encodeHTML(address)}">
+<small>(${lang("optional")})</small>
+
+<!-- LANG -->
+<h4>
+${lang("comment.language")}
+</h4>
+<select name="to_language">
+<list languages as l>
+<option value="${l.id}">${l.name}</option>
+</list>
+</select>
+<small>(${lang("optional")})</small>
+
+</div>
+
+<h2>
+${lang("posting.step03")}
+</h2>
+
+
+<div class="pformstep02">
+
+<list attachments as a>
+    <hr>
+    <h4>
+      ${utility.encodeHTML(a.filename)}
+    </h4>
+    <input type="checkbox" name="${a.fieldname}_cancel"> ${lang("posting.media.cancel")}
+
+    <h4>
+      ${lang("posting.media.title")} 
+    </h4>
+    <input type="text" class="preq" name="${a.fieldname}_title" size="40" maxlength="80" value="${utility.encodeHTML(a.title)}">
+</list>
+
+<hr>
+
+<table>
+  <tr>
+    <td>
+    ${lang("posting.media.title")} 1:
+    </td>
+    <td colspan="2">
+      <input type="text" name="media1_title" size="40" maxlength="80" value=""><br>
+    </td>
+  </tr>
+  <tr>
+    <td>${lang("posting.media.media")} 1</td>
+    <td colspan="2">
+      <INPUT TYPE="file" NAME="media1">
+    </td>
+  </tr>
+  <tr>
+    <td>
+    ${lang("posting.media.title")} 2:
+    </td>
+    <td colspan="2">
+      <input type="text" name="media2_title" size="40" maxlength="80" value=""><br>
+    </td>
+  </tr>
+  <tr>
+    <td>${lang("posting.media.media")} 2</td>
+    <td colspan="2">
+      <INPUT TYPE="file" NAME="media2">
+    </td>
+  </tr>
+  <tr>
+    <td>
+    ${lang("posting.media.title")} 3:
+    </td>
+    <td colspan="2">
+      <input type="text" name="media3_title" size="40" maxlength="80" value=""><br>
+    </td>
+  </tr>
+  <tr>
+    <td>${lang("posting.media.media")} 3</td>
+    <td colspan="2">
+      <INPUT TYPE="file" NAME="media3">
+    </td>
+  </tr>
+</table>
+
+<if config["Localizer.OpenSession.AllowFTPUploads"]!="0">
+  <if config["Localizer.OpenSession.AllowFTPUploadSelection"]!="0" && ftpfiles>
+    <hr>
+    <h4>
+      ${lang("posting.media.ftpmedia")}
+    </h4>
+    <select name="ftpupload">
+      <option value="">&nbsp;</option>
+      <list ftpfiles as f>
+        <option value="${utility.encodeHTML(f)}">${f}</option>
+      </list>
+    </select>
+    
+    <h4>
+      ${lang("posting.media.title")} 
+    </h4>
+    <input type="text" class="preq" name="ftpupload_title" size="40" maxlength="80" value="">
+  <else>
+    <hr>
+    <h4>
+      ${lang("posting.media.ftpmedia")}
+    </h4>
+    <input type="text" name="ftpupload"  size="40" maxlength="80" value="">
+    <h4>
+      ${lang("posting.media.title")} 
+    </h4>
+    <input type="text" class="preq" name="ftpupload_title" size="40" maxlength="80" value="">
+  </if>  
+</if>  
+
+</div>
+
+
+<h2>
+${lang("posting.step04")}
+</h2>
+<div class="pformstep06">
+<div class="pbuttons">
+<input type="submit" name="post" class="psubmit" value="${lang("comment.submit")}">
+<input type="reset" class="preset" value="${lang("comment.reset")}">
+</div>
+</div>
+</form>
+</div>
+</body>
+</html>
+
diff --git a/etc/open/edittranslation.template b/etc/open/edittranslation.template
new file mode 100755 (executable)
index 0000000..1d37ef9
--- /dev/null
@@ -0,0 +1,334 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//DE">
+<html>
+<head>
+<title>${lang("posting.htmltitle")}</title>
+<meta name="description" content="${lang("posting.meta.description")}">
+<meta name="author" content="${lang("posting.meta.author")}">
+<meta name="keywords" content="${lang("posting.meta.keywords")}">
+<!--<meta name="date" content="### Date ###Time">-->
+<meta http-equiv="Content-Type" content="text/html; charset=${lang("htmlcharset")}">
+<meta name="robots" content="index">
+<meta name="robots" content="follow">
+
+
+    <style type="text/css"> body {background-image: none;} </style>
+
+
+<style type="text/css">
+<!--
+
+body {
+margin: 6px; background: #dddddd ;
+}
+h1, h2, h3, h4, h5, h6, p, li, dt, dd, div, td, blockquote
+{
+font-family:arial, helvetica, sans-serif;
+}
+
+.pformbox
+{
+border: none;
+margin: none;
+padding-left: 10px;
+padding-right: 10px;
+padding-bottom: 0px;
+padding-top: 0px;
+}
+
+h1 { padding-bottom: 0px; margin-bottom: 0px;}
+h2
+{
+padding-bottom: 0px;
+margin-bottom: 0px;
+padding: 2px;
+border: none;
+margin: none;
+border-top: 1px solid black;
+border-left: 1px solid black;
+border-right: 1px solid black;
+background-color: #003366;
+color: white;
+}
+h3 { padding-bottom: 0px; margin-bottom: 0px;}
+h4 { padding-bottom: 0px; margin-bottom: 0px;}
+
+.pdiscl
+{
+padding: 4px;
+margin-top: 6px;
+margin-bottom: 6px;
+
+border-color: #FFF;
+border-width: 2px;
+border-style: solid;
+}
+
+.pformstep01
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep02
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep03
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep04
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep05
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FAFAD2;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+.pformstep06
+{
+margin: none;
+border: none;
+padding: 8px;
+margin-top: 0px;
+margin-bottom: 6px;
+background-color: #FFFFFF;
+border-color: gray;
+border-width: 1px;
+border-style: solid;
+}
+
+input.psubmit
+{
+padding: 5px;
+border: 2px solid green;
+background-color: #6F0;
+}
+
+input.preset
+{
+padding: 5px;
+border: 2px solid red;
+background-color: #F96;
+}
+
+.pbuttons {
+text-align: right;
+}
+
+input
+{
+background-color: #efefef;
+}
+
+textarea
+{
+background-color: #efefef;
+}
+
+
+input.preq
+{
+background-color: #ffffff;
+}
+textarea.preq
+{
+background-color: #ffffff;
+}
+
+.error {
+color: red;
+}
+
+-->
+</style>
+
+</head>
+
+<body bgcolor="#dddddd">
+
+<function showErrors(aField)>
+<comment>
+function to display error message at the input box  // occam, 2003-06-09
+</comment>
+<if errors>
+<list errors as e>
+<if e.field==aField>
+${lang(e.message + "." + e.field)}
+</if>
+</list>
+</if>
+</function>
+
+    <if errors>
+
+
+          Your input had the following errors:<br><br>
+          <list errors as e>
+            <font color="red">
+              <if e.field>
+                ${lang("content."+e.field)}:
+              </if>
+              ${lang(e.message)} <br>
+            </font>
+          </list>
+
+
+    </if>
+
+
+<comment>
+
+<div class="pdiscl">
+<include "disclaimer.inc.de">
+</div>
+
+</comment>
+
+<div class="pformbox">
+
+<h1>
+${lang("translation.form.title")}
+</h1>
+<form enctype="multipart/form-data" action="${actionURL}&do=opensession&sessiontype=translation&to_content=${parent.id}" method="post">
+
+    <if errors>
+<p class="error">${lang("posting.errors")}</p>
+    </if>
+
+
+
+<h2>
+${lang("translation.step01")} <!-- info about translation -->
+</h2>
+
+<div class="pformstep01">
+<!-- LANG -->
+<h4>
+${lang("translation.language")}
+</h4>
+<select name="to_language">
+<list languages as l>
+<option value="${l.id}">${l.name}</option>
+</list>
+</select>
+<br />
+${lang("translation.to_language.other")}
+<input type="text" name="subtitle" value="${utility.encodeHTML(subtitle)}">
+
+<!-- AUTOR -->
+<h4>
+${lang("translation.author")}
+</h4>
+<input type="text" class="preq" name="creator" value="${utility.encodeHTML(creator)}" size="45" maxlength="45"> 
+<if errors>
+<big class="error"><call showErrors("creator")></big>
+<else>
+<small><strong>(${lang("required")})</strong></small>
+</if>
+</div>
+
+
+<h2>
+${lang("translation.step02")}
+</h2>
+<div class="pformstep02">
+<!-- TITEL -->
+<h4>
+${lang("translation.title")}
+</h4>
+<p><i>${utility.encodeHTML(parent.title)}</i></p>
+<p>
+<input type="text" class="preq" name="title" size="45" maxlength="45" value="${utility.encodeHTML(title)}">
+<if errors>
+<big class="error"><call showErrors("title")></big>
+</if>
+</p>
+
+
+<!-- ABSTRACT -->
+<h4>
+${lang("translation.abstract")}
+</h4>
+<p><i>${utility.encodeHTML(parent.description)}</i></p>
+<textarea name="description" class="preq" rows="10" cols="74" wrap=virtual>${utility.encodeHTML(description)}</textarea>
+<if errors>
+<big class="error"><call showErrors("description")></big>
+</if>
+<!-- CONTENT -->
+<h4>
+${lang("translation.text")}
+</h4>
+<p><i>${utility.encodeHTML(parent.content_data)}</i></p>
+<textarea name="content_data" class="preq" rows="35" cols="74" wrap="soft">${utility.encodeHTML(content_data)}</textarea>
+<if errors>
+<big class="error"><call showErrors("content_data")></big>
+</if>
+<p>
+${lang("translation.is_html")}
+</p>
+<select name="is_html">
+              <option value="0" <if parent.is_html!="1">selected</if>>plain/text</option>
+              <option value="1" <if parent.is_html=="1">selected</if>>text/html</option>
+</select>
+
+
+</div>
+
+<h2>
+${lang("translation.step03")}
+</h2>
+<div class="pformstep03">
+
+<p>
+${lang("translation.submit.info")}
+</p>
+<div class="pbuttons">
+<input type="submit" name="post" class="psubmit" value="${lang("posting.submit")}">
+<input type="reset" class="preset" value="${lang("posting.reset")}">
+</div>
+
+</div>
+
+</form>
+</div>
+</body>
+</html>
diff --git a/etc/open/email_article.template b/etc/open/email_article.template
new file mode 100755 (executable)
index 0000000..2955783
--- /dev/null
@@ -0,0 +1,101 @@
+Subject: MIR-FORWARD::${data.article.title}
+Mime-Version: 1.0
+Content-Type: multipart/alternative; boundary="bboouunnddaarryy"
+
+--bboouunnddaarryy
+Content-type: text/plain;
+
+${lang("general.htmltitle")} Email Forward
+------------------------------------------------------------ 
+
+${data.article.title}
+          
+${data.article.creator}, ${data.article.creationdate.formatted["dd.MM.yyyy HH:mm"]}
+
+${data.article.description}
+  
+${data.article.content_data}
+        
+<if data.article.creator_main_url || data.article.creator_email>            
+<if data.article.creator_email>
+${lang("article.email.prefix")}: ${data.article.creator_email}
+</if>
+<if data.article.creator_main_url>
+${lang("article.homepage.prefix")}: ${data.article.creator_main_url} 
+</if>
+</if>
+
+Source of this emailed article:
+${config["Producer.ProductionHost"]}/${config["Producer.DocRoot"]}/${data.languagecode}/${data.article.creationdate.formatted["yyyy/MM"]}/${data.article.id}.shtml
+
+!COMMENT!
+--bboouunnddaarryy
+Content-type: text/html;charset="utf-8";
+
+<html>
+<body bgcolor="#dddddd" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" link="#003399" alink="#cc0033" vlink="#660033" >
+<h1>${lang("general.htmltitle")}::Forwarded Article </h1>
+<table cellpadding="30" cellspacing="0" border="0" width="80%"><tr><td>
+        <br>
+        <h2>${data.article.title}(<a href="${config["Producer.ProductionHost"]}/${config["Producer.DocRoot"]}/${data.languagecode}/${data.article.creationdate.formatted["yyyy/MM"]}/${data.article.id}.shtml">original location here</a>)</h2>
+        
+  <p><i><font size="-1">${data.article.creator}, ${data.article.creationdate.formatted["dd.MM.yyyy HH:mm"]}</font></i></p>
+        <br>
+  <p>${data.article.description_parsed}</p>
+  <!-- media -->
+  <list data.article.to_media_audio as media>
+  <p>
+  <a href="${media["publish_server"]}${media["publish_path"]}">
+  ${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}
+  </a>
+  </p>
+  </list>
+  <list data.article.to_media_video as media>
+  <p>
+  <img src="../../../img/${media["big_icon"]}" border="0" alt="">
+  <a href="${media["publish_server"]}${media["publish_path"]}">
+  ${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}</a>
+  </p>
+  </list>
+  <list data.article.to_media_other as media>
+  <p>
+  <img src="../../../img/${media["big_icon"]}" border="0" alt="">
+  <a href="${media["publish_server"]}${media["publish_path"]}">
+  ${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}</a>
+  </p>
+  </list>
+      
+  <list data.article.to_media_images as image>
+  <p>
+  <img src="${image["publish_server"]}${image["publish_path"]}"
+  border="0" width="${image["img_width"]}"
+  height="${image["img_height"]}" alt="${image["title"]}">
+  <br><i>${image["title"]}</i>
+  </p>
+  </list>
+  <br>
+  <p><font size="-1">${data.article.content_data_parsed}</font></p>
+  <br>
+  <if data.article.creator_main_url || data.article.creator_email>
+  <p>
+    <font size="-1">
+    <if data.article.creator_email>
+      <img src="../../../img/mail_small.gif" width="12" height="10" border="0" alt="-"> ${lang("article.email.prefix")}: <a href="mailto:${article.creator_email}">${article.creator_email}</a><br>
+    </if>
+    <if data.article.creator_main_url>
+      <img src="../../../img/link_small.gif" width="12" height="10" border="0" alt=""> ${lang("article.homepage.prefix")}: <a href="${article.creator_main_url}" target="extern">${data.article.creator_main_url}</a><br>
+    </if>
+  </font>
+  </p>
+  </if>
+  <br>
+  <br>
+  <br>
+  !COMMENT!          
+  </td>
+  </tr>
+</table>
+</body>
+</html>
+--bboouunnddaarryy--
+
diff --git a/etc/open/error.template b/etc/open/error.template
new file mode 100755 (executable)
index 0000000..78b90f7
--- /dev/null
@@ -0,0 +1,37 @@
+<html>
+<head>
+    <title>${config["Mir.Name"]} | ${lang("error.htmltitle")}</title>
+    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
+</head>
+<body>
+<include "head.template">
+<table width="100%" border="0" align="center">
+  <tr class="grey">
+    <td>
+      <div align="center"><h2><font class="specialtext">${lang("error.title")}</font></h2>
+      </div>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p>${lang("error.text", config["Mir.Tech-email.address"], config["Mir.Tech-email.name"])}
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p>
+      <p align="center"><font color="red">${data.errorstring}</font>
+      <p>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p align="center">
+            ${lang("error.text2", config["Mir.Tech-email.address"], config["Mir.Tech-email.name"])}
+      <p>
+    </td>
+  </tr>
+</table>
+<include "foot.template">
+</body>
+</html>
diff --git a/etc/open/posting_disabled.template b/etc/open/posting_disabled.template
new file mode 100755 (executable)
index 0000000..21a4468
--- /dev/null
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+  <title>${lang("postingdisabled.htmltitle")}</title>
+</head>
+
+<body bgcolor="White" text="Black" link="#006600" vlink="#666666" alink="Red">
+
+<table width="100%" border="0" cellspacing="0" cellpadding="4" bgcolor="#cccccc">
+  <tr>
+    <td align="center" bgcolor="#666666">
+    <font color="White">${lang("postingdisabled.title")}</font></td>
+  </tr>
+  <tr>
+    <td bgcolor="#eeeeee">
+      <font color="#000000">
+        <center>
+          ${lang("postingdisabled.info")}
+        <center>
+      </font>
+    </td>
+  </tr>
+  <tr>
+    <td valign="top" align="center" bgcolor="#666666">
+      <a href="javascript:history.go(-1)"><font color="White"><b>&gt;&gt; ${lang("postingdisabled.back")}</b></font></a>
+    </td>
+  </tr>
+</table>
+</body>
+</html>
diff --git a/etc/open/preparemail.template b/etc/open/preparemail.template
new file mode 100755 (executable)
index 0000000..74f2e2b
--- /dev/null
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+  <title>${lang("email.prepare.htmltitle")}</title>
+</head>
+
+<body bgcolor="White" text="Black" link="#006600" vlink="#666666" alink="Red">
+
+<table width="100%" border="0" cellspacing="0" cellpadding="4" bgcolor="#cccccc">
+  <tr>
+    <td align="center" bgcolor="#666666">
+    <font color="White">${lang("email.prepare.title")}</font></td>
+  </tr>
+  <tr>
+    <td bgcolor="#eeeeee"><font color="#000000">
+${lang("email.prepare.description")}<BR>
+<FORM method="post" action="${actionURL}&do=opensession&sessiontype=email">
+<!-- <input type="hidden" name="mail_aid" value="${email.aid}">-->
+${lang("email.prepare.sendtowhom")}  <input type="text" size="20" name="mail_to" value="${mail_to}"> <BR> 
+${lang("email.prepare.from.email")} <input type="text" size="20" name="mail_from" value="${mail_from}"> <BR> 
+${lang("email.prepare.from.name")} <input type="text" size="20" name="mail_from_name" value="${mail_from_name}"> <BR> 
+${lang("email.prepare.comment")} <textarea name="mail_comment" rows="5" cols="40">${mail_comment}</textarea><BR>
+${lang("email.prepare.chooselanguage")}
+<select name="mail_language">
+  <option value="en" <if mail_language=="en">selected</if>>english</option>
+  <option value="de" <if mail_language=="de">selected</if>>deutsch</option>  
+</select>
+
+<input type="submit" value='${lang("email.prepare.send")}'> 
+</FORM>
+  </td>
+</tr>
+
+<tr>
+  <td valign="top" align="center" bgcolor="#666666">
+  <a href="javascript:history.go(-1)"><font color="White"><b>&gt;&gt; ${lang("postingdone.back")}</b></font></a>
+    </td>
+  </tr>
+</table>
+</body>
+</html>
diff --git a/etc/open/search_results.template b/etc/open/search_results.template
new file mode 100755 (executable)
index 0000000..01e42d4
--- /dev/null
@@ -0,0 +1,213 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+<title>${lang("search.htmltitle")}</title>
+<link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
+</head>
+
+<body bgcolor="White" text="Black" link="#006600" vlink="#666666" alink="Red">
+
+<form method="post" action="${config["Producer.OpenAction"]}">
+<input type="hidden" name="do" value="search" />
+
+<table width="100%" border="0" cellspacing="2" cellpadding="4" bgcolor="#cccccc">
+  <tr>
+    <td align="left" class="table-head" colspan="2">
+      <b>&nbsp;&nbsp;&nbsp;${lang("search.title")}</b>
+    </td>
+  </tr>
+
+  <tr>
+    <td class="table-right" colspan="2">
+      &nbsp;
+    </td>
+  </tr>
+
+  <tr>
+    <td class="table-left" width="30%">
+      ${lang("search.mainsearchfield")}
+    </td>
+    <td class="listrow2" valign="top">
+      <input type="text" size="40" name="search_content" value="${data.search_content}" />
+    </td>
+  </tr>
+  <tr>
+    <td class="table-foot" align="left">
+      <spann style='color:#000000; font-size:1.2em;'><b>${lang("search.refine")}</b></spann>
+    </td>
+    <td class="table-foot" align="right">
+      <input type="submit" name="search_submit" value="${lang("search.searchbutton")}" />
+    </td>
+  </tr>
+  <tr>
+      <td class="table-left">
+      ${lang("search.all_or_any")}
+    </td>
+      <td class="listrow2">
+      <if data.search_boolean == "and">
+            <input type="radio" name="search_boolean" value="and" checked="true">${lang("search.all")}
+            <input type="radio" name="search_boolean" value="or">${lang("search.any")}
+          <else>
+            <input type="radio" name="search_boolean" value="and">${lang("search.all")}
+            <input type="radio" name="search_boolean" value="or" checked="true">${lang("search.any")}
+          </if>
+      </td>
+  </tr>
+  <tr>
+      <td class="table-left">
+      ${lang("search.by_author")}
+    </td>
+      <td class="listrow2">
+      <input type="text" name="search_creator" value="${data.search_creator}" />
+      </td>
+  </tr>
+    <tr>
+      <td class="table-left">${lang("search.by_topic")}</td>
+      <td class="listrow2">
+      <select name="search_topic">
+          <if (!data.search_topic) || (data.search_topic == "") >
+              <option value="" selected>${lang("search.all_topics")}
+          <else>
+              <option value="">${lang("search.all_topics")}
+          </if>
+          <list data.topics as topic>
+            <if topic.value != "--" >
+              <if data.search_topic == topic.value>
+                  <option selected>${topic.value}
+              <else>
+                  <option>${topic.value}
+              </if>
+            </if>
+          </list>
+          </select>
+      </td>
+    </tr>
+
+
+  <tr>
+    <td class="table-left"><b>${lang("search.with_images")}</b></td>
+    <td class="listrow2">
+      <if data.search_hasImages == "y">
+        <input type="radio" name="search_hasImages" value="y" checked="true">${lang("search.yes")}
+        <input type="radio" name="search_hasImages" value="n">${lang("search.no")}
+      <else>
+        <input type="radio" name="search_hasImages" value="y">${lang("search.yes")}
+        <input type="radio" name="search_hasImages" value="n" checked="true">${lang("search.no")}
+      </if>
+    </td>
+  </tr>
+  <tr>
+    <td class="table-left"><b>${lang("search.with_audio")}</b></td>
+    <td class="listrow2">
+      <if data.search_hasAudio == "y">
+        <input type="radio" name="search_hasAudio" value="y" checked="true">${lang("search.yes")}
+        <input type="radio" name="search_hasAudio" value="n">${lang("search.no")}
+      <else>
+        <input type="radio" name="search_hasAudio" value="y">${lang("search.yes")}
+        <input type="radio" name="search_hasAudio" value="n" checked="true">${lang("search.no")}
+      </if>
+    </td>
+  </tr>
+  <tr>
+    <td class="table-left"><b>${lang("search.with_video")}</b></td>
+    <td class="listrow2">
+      <if data.search_hasVideo == "y">
+        <input type="radio" name="search_hasVideo" value="y" checked="true">${lang("search.yes")}
+        <input type="radio" name="search_hasVideo" value="n">${lang("search.no")}
+      <else>
+        <input type="radio" name="search_hasVideo" value="y">${lang("search.yes")}
+        <input type="radio" name="search_hasVideo" value="n" checked="true">${lang("search.no")}
+      </if>
+    </td>
+  </tr>
+
+<tr>
+<td class="table-left">
+${lang("search.sort_how")}
+</td>
+<td class="listrow2">
+<input type="radio" name="search_sort" value="score" <if data.search_sort =="score" || !data.search_sort || data.search_sort == "" >checked="true"</if>>${lang("search.by_score")}
+<input type="radio" name="search_sort" value="date_desc" <if data.search_sort =="date_desc">checked="true"</if>>${lang("search.new_first")}
+<input type="radio" name="search_sort" value="date_asc" <if data.search_sort =="date_asc">checked="true"</if>>${lang("search.old_first")}
+
+</td>
+</tr>
+<tr>
+<td colspan="2" class="table-foot" align="right">
+<input type="submit" name="search_submit" value="${lang("search.searchbutton")}" />
+</td>
+</tr>
+</table>
+<br>
+<div align="left">
+<a href="${config["Producer.PublicationHost"]}/" class="link-box">&gt;&gt; ${lang("postingdone.back")}</a>
+</div>
+<br>
+
+<!--Lucene Query was: ${data.queryString} <br>-->
+<hr>
+<div align="right">
+<if data.hasPrevious=="y">
+<input type="submit" name="search_back" value="${lang("search.back")}" />&nbsp;&nbsp;
+</if>
+<if data.hasNext=="y">
+<input type="submit" name="search_forward" value="${lang("search.forward")}" />
+</if>
+</div>
+<hr>
+
+<if data.queryString>
+<p class="box-head"><b>${lang("search.info")}</b></p>
+<p class="box"><font size="-1">${lang("search.numhits")} = ${data.numberOfHits}</font></p>
+</if>
+
+
+<list data.hits as h>
+  <div class="box">
+  <table width="100%">
+    <tr>
+      <td align="left" valign="top" width="85%">
+        <b>${lang("search.result.title")}</b> <a href='${config["Producer.PublicationHost"]}/${lang("langcode")}${h.where}'>${h.title}</a>
+
+        <br>
+        <b>${lang("search.result.author")}</b> ${h.creator}<br >
+        <b>${lang("search.result.date")}</b> ${h.webdb_create_formatted}<br>
+        <b>${lang("search.result.description")}</b> ${h.description} <br>
+      </td>
+      <td align="right" valign="top">
+    <if h.hasAudio=="y">
+          <img src="${config["Producer.PublicationHost"]}/img/audio_big.gif">&nbsp;
+        </if>
+        <if h.hasVideo == "y">
+          <img src="${config["Producer.PublicationHost"]}/img/video_big.gif">&nbsp;
+        </if>
+        <list h.images as image>
+          <img src="${config["Producer.PublicationHost"]}/${image}"><br>
+        </list>
+      &nbsp;
+  </td>
+    </tr>
+  </table>
+  </div>
+
+</list>
+<hr>
+<div align="right">
+<if data.hasPrevious=="y">
+<input type="submit" name="search_back" value="${lang("search.back")}" />&nbsp;&nbsp;
+</if>
+<if data.hasNext=="y">
+<input type="submit" name="search_forward" value="${lang("search.forward")}" />
+</if>
+</div>
+<hr>
+
+</form>
+<br>
+<a href="/" class="link-box">&gt;&gt; ${lang("postingdone.back")}</a>
+
+
+</body>
+</html>
+
diff --git a/etc/open/sent_mail.template b/etc/open/sent_mail.template
new file mode 100755 (executable)
index 0000000..ad99196
--- /dev/null
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+  <title>${lang("email.sent.htmltitle")}</title>
+</head>
+
+<body bgcolor="White" text="Black" link="#006600" vlink="#666666" alink="Red">
+
+<table width="100%" border="0" cellspacing="0" cellpadding="4" bgcolor="#cccccc">
+  <tr>
+    <td align="center" bgcolor="#666666">
+    <font color="White">${lang("email.sent.title")}</font></td>
+  </tr>
+  <tr>
+    <td bgcolor="#eeeeee"><font color="#000000">
+${lang("email.sent.text")}
+
+  </td>
+</tr>
+<tr>
+  <td valign="top" align="center" bgcolor="#666666">
+<a href="javascript:history.go(-2)"><font color="White"><b>&gt;&gt; ${lang("postingdone.back")}</b></font></a>
+    </td>
+  </tr>
+</table>
+</body>
+</html>
+
+
+
diff --git a/etc/open/sessionerror.template b/etc/open/sessionerror.template
new file mode 100755 (executable)
index 0000000..9a7081a
--- /dev/null
@@ -0,0 +1,35 @@
+<html>
+<head>
+    <title>${config["Mir.Name"]} | ${lang("error.htmltitle")}</title>
+    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
+</head>
+<body>
+<table width="100%" border="0" align="center">
+  <tr class="grey">
+    <td>
+      <div align="center"><h2><font class="specialtext">${lang("error.title")}</font></h2>
+      </div>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p>${lang("error.text", config["Mir.Tech-email.address"], config["Mir.Tech-email.name"])}
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p>
+      <p align="center"><font color="red">${errorstring}</font>
+      <p>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p align="center">
+            ${lang("error.text2", config["Mir.Tech-email.address"], config["Mir.Tech-email.name"])}
+      <p>
+    </td>
+  </tr>
+</table>
+</body>
+</html>
diff --git a/etc/open/unsupportedmediatype.template b/etc/open/unsupportedmediatype.template
new file mode 100755 (executable)
index 0000000..5e8bcac
--- /dev/null
@@ -0,0 +1,32 @@
+<html>
+<head>
+    <title>${config["Mir.Name"]} | ${lang("error.htmltitle")}</title>
+    <link rel="stylesheet" type="text/css" href="${config.docRoot}/style/admin.css">
+</head>
+<body>
+<include "head.template">
+<table width="100%" border="0" align="center">
+  <tr class="grey">
+    <td>
+      <div align="center"><h2><font class="specialtext">${lang("error.title")}</font></h2>
+      </div>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p>
+      <p align="center"><font color="red">${lang("media.error.unsupportedformat", mimetype)}</font>
+      <p>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p align="center">
+            ${lang("error.text2", config["Mir.Tech-email.address"], config["Mir.Tech-email.name"])}
+      <p>
+    </td>
+  </tr>
+</table>
+<include "foot.template">
+</body>
+</html>
diff --git a/etc/open/usererror.template b/etc/open/usererror.template
new file mode 100755 (executable)
index 0000000..4409c36
--- /dev/null
@@ -0,0 +1,37 @@
+<html>
+<head>
+<title>${lang("usererror.htmltitle")}</title>
+</head>
+<body>
+<include "templates/admin/head_nonavi.template">
+<table width="100%" border="0" align="center">
+  <tr bgcolor="#006600">
+    <td>
+      <div align="center"><h2><font color="Pink">${lang("usererror.title")}</font></h2>
+      </div>
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p>${lang("usererror.text")}
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p>
+      <p align="center"><font size="5" color="Red"><b> ${data.errorstring}</b></font>
+            <p>
+      <p> 
+    </td>
+  </tr>
+  <tr>
+    <td>
+      <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="-1">${lang("usererror.what_to_do")}
+      </a></font>
+      <p>
+    </td>
+  </tr>
+</table>
+<include "foot.template">
+</body>
+</html>
diff --git a/etc/producer/RSS-full.template b/etc/producer/RSS-full.template
new file mode 100755 (executable)
index 0000000..be4f4df
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<function mediaitem(item, icon, w, h)>
+        <assign title=item.title>
+        <td><a href="${item["publish_server"]}${item["publish_path"]}">
+        <img src="${icon}" alt="${title}" <if w && h>width="${w}" height="${h}"</if>></a>
+        <if title != ""><br><span>${title}</span></if></td>
+</function>
+
+<function imageitem(image)>
+        <call mediaitem(image, iconprefix+image["icon_path"], image["icon_width"], image["icon_height"])>
+</function>
+
+<function otheritem(media)>
+        <call mediaitem(media, iconprefix+"/img/" + media["big_icon"], "", "")>
+</function>
+
+
+<rdf:RDF
+  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+  xmlns="http://purl.org/rss/1.0/"
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+  xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
+  xmlns:content="http://purl.org/rss/1.0/modules/content/"
+>
+
+  <channel rdf:about="${utility.encodeHTML(channelidentifier)}">
+    <title>${utility.encodeHTML(channeltitle)}</title>
+    <link>${utility.encodeHTML(channelidentifier)}</link>
+    <if channeldescription>
+      <description>${utility.encodeHTML(channeldescription)}</description>
+    </if>
+    <if channelpublisher>
+      <dc:publisher>${utility.encodeHTML(channelpublisher)}</dc:publisher>
+    </if>
+    <dc:rights>Open Content License, http://www.opencontent.org</dc:rights>
+    <dc:date>${config.now.formatted.dc}</dc:date>
+    <items>
+      <rdf:Seq>
+        <list articles as i>  
+          <rdf:li rdf:resource="${articleprefix}/${i.date.formatted["yyyy"]}/${i.date.formatted["MM"]}/${i.id}.shtml" />
+        </list>
+      </rdf:Seq>
+    </items>
+  </channel>
+
+  <list articles as i>    
+    <item rdf:about="${articleprefix}/${i.date.formatted["yyyy"]}/${i.date.formatted["MM"]}/${i.id}.shtml">
+      <title>${utility.encodeHTML(i.title)}</title>
+      <link>${articleprefix}/${i.date.formatted["yyyy"]}/${i.date.formatted["MM"]}/${i.id}.shtml</link>    
+      <description>${utility.encodeHTML(i.description_parsed)}</description>
+      <assign media=i>
+      <content:encoded>
+        <![CDATA[
+            <if media.to_media_images || media.to_media_video || media.to_media_audio || media.to_media_other>
+            <table>
+            <assign n = 0>
+            
+            <list media.to_media_images as image>
+                    <if n == "0"> <tr> </if>
+                    <call imageitem(image)>
+                    <if n == "000"> <assign n = 0> </tr> <else> <assign n = n + 0> </if>
+            </list>
+            
+            <list media.to_media_video as video>
+                    <if n == "0"> <tr> </if>
+                    <call otheritem(video)>
+                    <if n == "000"> <assign n = 0> </tr> <else> <assign n = n + 0> </if>
+            </list>
+            
+            <list media.to_media_audio as audio>
+                    <if n == "0"> <tr> </if>
+                    <call otheritem(audio)>
+                    <if n == "000"> <assign n = 0> </tr> <else> <assign n = n + 0> </if>
+            </list>
+            
+            <list media.to_media_other as other>
+                    <if n == "0"> <tr> </if>
+                    <call otheritem(other)>
+                    <if n == "000"> <assign n = 0> </tr> <else> <assign n = n + 0> </if>
+            </list>
+            
+            </table></if>
+        ]]>
+        ${utility.encodeHTML(i.content_data_parsed)}
+      </content:encoded>
+      <dc:date>${i.creationdate.formatted["yyyy-MM-dd'T'HH:mm'-07:00'"]}</dc:date>
+      <if i.creator>
+        <dc:creator>${utility.encodeHTML(i.creator)}</dc:creator>
+      </if>
+      <if i.creator_main_url>
+        <dc:link>${utility.encodeXML(i.creator_main_url)}</dc:link>
+      </if>
+      <dc:language>${i.language.code}</dc:language>
+    </item>
+  </list>
+</rdf:RDF>
diff --git a/etc/producer/RSS.template b/etc/producer/RSS.template
new file mode 100755 (executable)
index 0000000..0be5075
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<rdf:RDF
+  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+  xmlns="http://purl.org/rss/1.0/"
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+  xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
+>
+
+  <channel rdf:about="${utility.encodeXML(channelidentifier)}">
+    <title>${utility.encodeXML(channeltitle)}</title>
+    <link>${utility.encodeXML(channelidentifier)}</link>
+    <description>${utility.encodeXML(channeldescription)}</description>
+    <dc:publisher>${utility.encodeXML(channelpublisher)}</dc:publisher>
+    <dc:rights>Open Content License, http://www.opencontent.org</dc:rights>
+    <dc:date>${config.now.formatted.dc}</dc:date>
+    <items>
+      <rdf:Seq>
+        <list articles as i>   
+         <rdf:li rdf:resource="${articleprefix}/${i.date.formatted["yyyy"]}/${i.date.formatted["MM"]}/${i.id}.shtml" />
+        </list>
+      </rdf:Seq>
+    </items>
+  </channel>
+
+  <list articles as i>                 
+    <item rdf:about="${articleprefix}/${i.date.formatted["yyyy"]}/${i.date.formatted["MM"]}/${i.id}.shtml">
+        <title>${i.title}</title>
+        <link>${articleprefix}/${i.date.formatted["yyyy"]}/${i.date.formatted["MM"]}/${i.id}.shtml</link>    
+      <dc:date>${i.creationdate.formatted["yyyy-MM-dd'T'HH:mm'-07:00'"]}</dc:date>
+    </item>
+  </list>
+  
+</rdf:RDF>
+
+
diff --git a/etc/producer/article.template b/etc/producer/article.template
new file mode 100755 (executable)
index 0000000..5e328bf
--- /dev/null
@@ -0,0 +1,305 @@
+<comment>
+  Template file for an article.
+</comment><!DOCTYPE HTML PUBLIC 
+   "-//W3C//DTD HTML 4.01 Transitional//EN" 
+   "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=${config["Mir.DefaultHTMLCharset"]}"> 
+    <title>${config["Mir.Name"]} | ${article.title}</title>
+  <meta name="keywords" content="indymedia,imc">
+  <meta name="description" content="indymedia,imc">
+  <meta http-equiv="expires" content="599">
+  <meta http-equiv="pragma" content="no-cache">
+  <if article.mediacount!=0>
+    <if article.to_media_images>
+      <meta name="keywords" content="images"></meta>
+    </if>
+    <if article.to_media_audio>
+      <meta name="keywords" content="audio"></meta>
+    </if>
+    <if article.to_media_video>
+      <meta name="keywords" content="video"></meta>
+    </if>
+    <if article.to_media_other>
+      <meta name="keywords" content="other"></meta>
+    </if>
+  </if>
+   <link rel="stylesheet" type="text/css" href="http://sarai.indymedia.org/~patrick/mir.nyc/css/main.css" />
+   <script language="javascript">
+  function addToNewsletter(id){
+    var previousValue=getCookie("myNewsletter");
+    document.cookie="myNewsletter="+previousValue+","+id + ";path=/";
+    alert("Added article id to cookie!");
+  }
+
+  function clearNewsletter(){
+                document.cookie="myNewsletter= ;path=/";
+                alert("newsletter erased!");
+        }
+
+  function getNewsletter(){
+    var cookieValue=getCookie("myNewsletter");
+    if (document.images)
+        location.replace('${config["Producer.OpenAction"]}?do=getpdf&id='+cookieValue+'&forIE=.pdf');
+    else
+        location.href = '${config["Producer.OpenAction"]}?do=getpdf&id='+cookieValue+'&forIE=.pdf';
+  }
+
+  function getCookie(name){
+
+          var cookies = document.cookie;
+
+          if (cookies.indexOf(name) != -1){
+                  var startpos = cookies.indexOf(name)+name.length+1;
+                  var endpos = cookies.indexOf(";",startpos)-1;
+                  if (endpos == -2) endpos = cookies.length;
+                  return unescape(cookies.substring(startpos,endpos));
+          }
+          else{
+                  return false; // the cookie couldn't be found! it was never set before, or it expired.
+          }
+  }
+
+   </script>
+
+</head>
+           
+<body>
+
+<div class="subsiteLinks">
+<table cellspacing="0" cellpadding="0" border="0">
+   <tr>
+      <td class="subsites">
+         <ul>
+               <li><a href="/audio/">Audio</a></li>
+               <li><a href="/photo/">Photo</a></li>
+               <li><a href="/print/">Print</a></li>
+               <li><a href="/video/">Video</a></li>
+               <li><a href="/">Web</a></li>
+         </ul>
+      </td>
+      <td class="i18n" nowrap="nowrap">
+         <a href="/en/">English</a>&nbsp;|
+         <a href="/es/">Espa&ntilde;ol</a>
+      </td>
+   </tr>
+</table>
+</div>
+<div class="subsiteLinks" style="background-color: #fff">
+<table id="boroughs" cellspacing="0" cellpadding="0" border="0">
+   <tr>
+      <td class="subsites">
+         <ul>
+               <li><a href="/print/">City &#38; Staten</a></li>
+               <li><a href="/audio/">Brooklyn</a></li>
+               <li><a href="/video/">Bronx</a></li>
+               <li><a href="/photo/">Queens</a></li>
+         </ul>
+      </td>
+      <td style="text-align: right;">
+         <a href="#" style="padding-right: 0px;">Text version</a>
+      </td>
+   </tr>
+</table>
+</div>
+
+<table class="logo" cellspacing="0" cellpadding="0" border="0">
+   <tr>
+      <td class="placeHolder">
+this is a draft<br />
+         <h3>
+            New York City Indymedia
+         </h3>
+<div style="font-size: 95%; font-variant: small-caps; letter-spacing: 3px;">A free network of <a href="http://www.cat.org.au/maffew/cat/openpub.html">Open Publishing</a></div>
+      </td>
+   </tr>
+</table>
+
+<table class="main" cellspacing="0" cellpadding="0" border="0">
+   <tr valign="top">
+      <td class="margin"></td>
+      <td class="leftColumn"><!-- 
+      begin left column
+      --><!--#include virtual="/var/lib/mir/nyc/public_html/${language.code}/navigation.inc" -->
+<!-- 
+      end left column
+      --></td>
+      <td class="margin"></td>
+      <td class="centerColumn"><!-- 
+      begin center column
+      -->
+
+
+<!--#include virtual="/languagebar/${article.to_original.date.formatted.yyyy}/${article.to_original.date.formatted.MM}/${article.to_original.id}.shtml"-->
+
+
+<p>
+   <a href="${config.openAction}?do=opensession&sessiontype=translation&to_content=${article.to_original.id}">${lang("general.addtranslation")}</a>
+</p>
+
+
+<p>
+   <b>${article.title}</b>
+</p>
+<p>
+   ${general.authoredby} ${article.to_original.creator}  
+<if article.to_original.id!=article.id>
+   (${lang("general.translatedby", article.creator)})
+</if>
+<if article.creator || article.to_original.creator>, </if>${article.to_original.creationdate.formatted["dd.MM.yyyy HH:mm"]}
+</p>
+<p>
+   ${article.description_parsed}
+</p>
+
+        <if article.to_original.mediacount!=0>
+          <!-- media -->
+          <list article.to_original.to_media_audio as media>
+          <p>
+                 <img src="/img/${media["big_icon"]}" border="0" alt="">&nbsp;
+                 <a href="${media["publish_server"]}${media["publish_path"]}">
+          ${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}
+          </a>
+          </p>
+          </list>
+
+         <list article.to_original.to_media_video as media>
+          <p>
+          <img src="/img/${media["big_icon"]}" border="0" alt="">
+          <a href="${media["publish_server"]}${media["publish_path"]}">
+          ${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}</a>
+          </p>
+          </list>
+
+         <list article.to_original.to_media_other as media>
+          <p>
+          <img src="/img/${media["big_icon"]}" border="0" alt="">
+          <a href="${media["publish_server"]}${media["publish_path"]}">
+          ${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}</a>
+          </p>
+          </list>
+
+          <list article.to_original.to_media_images as image>
+          <p>
+          <img src="${image["publish_server"]}${image["publish_path"]}"
+          border="0" width="${image["img_width"]}"
+          height="${image["img_height"]}" alt="${image["title"]}">
+          <br><i>${image["title"]}</i>
+          </p>
+          </list>
+               </if>
+
+
+<p>
+   ${article.content_data_parsed}
+</p>
+
+<if article.creator_main_url || article.creator_email>
+
+            <if article.creator_email>
+            <p>
+              <img src="/img/mail_small.gif" width="12" height="10" border="0" alt="-"> ${lang("article.email.prefix")}: <a href="mailto:${article.creator_email}">${article.creator_email}</a>
+            </p>
+            </if>
+            <if article.creator_main_url>
+            <p>
+              <img src="/img/link_small.gif" width="12" height="10" border="0" alt=""> ${lang("article.homepage.prefix")}: <a href="${article.creator_main_url}" target="extern">${article.creator_main_url}</a>
+            </p>
+            </if>
+          </if>
+
+
+<p>
+   <a href="${config["Producer.OpenAction"]}?do=getpdf&id=${article.id}&forIE=.pdf">${lang("article.get_as_pdf")}</a>
+</p>
+<p>
+   <a href="javascript:addToNewsletter(${article.id})">${lang("article.add_to_pdf")}</a>
+</p>
+
+<p>
+   <a href="javascript:getNewsletter()">${lang("article.newsletter_checkout")}</a>
+</p>
+
+<p>
+   <a href="${config["Producer.OpenAction"]}?do=mail&mail_aid=${article.id}&mail_language=${language.code}">${lang("article.send_as_email")}</a>
+</p>
+
+<p>
+   <a href="${config["Producer.OpenAction"]}?do=opensession&sessiontype=comment&to_media=${article.to_original.id}&language=${language.code}">${lang("article.addcomment")}</a>
+</p>
+
+
+          <if article.to_original.to_comments>
+              <list article.to_original.to_comments as c>
+
+
+<p>
+   ${utility.encodeHTML(c.title)}
+</p>
+
+<p>
+   ${c.creationdate.formatted["dd.MM.yyyy - HH:mm"]}
+</p>
+
+          <list c.to_media_audio as media>
+            <a href="${media["publish_server"]}${media["publish_path"]}">${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}</a>
+          </list>
+          <list c.to_media_video as media>
+            <img src="/img/${media["big_icon"]}" border="0" alt="">
+            <a href="${media["publish_server"]}${media["publish_path"]}">${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}</a>
+          </list>
+          <list c.to_media_other as media>
+            <img src="/img/${media["big_icon"]}" border="0" alt="">
+            <a href="${media["publish_server"]}${media["publish_path"]}">${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}</a>
+          </list>
+
+          <list c.to_media_images as image>
+            <img src="${image["publish_server"]}${image["publish_path"]}" border="0" width="${image["img_width"]}" height="${image["img_height"]}" alt="${image["title"]}"><br />
+            ${image["title"]}
+          </list>
+
+
+                <p>
+   ${c.description_parsed}
+</p>
+                <if c.email || c.main_url || c.address || c.phone || c.creator>
+                    <if c.creator>
+                      <p>
+   ${utility.encodeHTML(c.creator)}>
+</p>
+                    </if>
+                    <if c.email>
+                      <p>
+   <img src="/img/mail_small.gif" width="12" height="10" border="0" alt="">${lang("article.email.prefix")}: <a href="mailto:${utility.encodeHTML(c.email)}">${utility.encodeHTML(c.email)}</a>
+</p>
+                    </if>
+                    <if c.main_url>
+                      <p>
+   <img src="/img/link_small.gif" width="12" height="10" border="0" alt="">${lang("article.homepage.prefix")}: <a href="${utility.encodeHTML(c.main_url)}" target="_blank">${utility.encodeHTML(c.main_url)}</a>
+</p>
+                    </if>
+                </if>
+              </list>
+          </if><!-- 
+      end center column
+      --></td>
+      <td class="margin"></td>
+   </tr>
+</table>
+<div class="copyleft">
+   <small>
+      <a href="#">copyLeft</a>&#160;|
+      <a href="javascript:var e1='%6e%79c%2e&#105;n%64&#121;%6de&#100;&#105;%61&#046;o%72&#103;',e2='&#109;&#097;&#105;&#108;&#116;&#111;&#058;%20', e3='&#105;%6e%66%6f';var e0=e2+e3+'@'+e1;(window.location?window.location.replace(e0):document.write(e0));">&#105;&#110;&#102;&#111;&#064;&#110;&#121;&#099;&#046;&#105;&#110;&#100;&#121;&#109;&#101;&#100;&#105;&#097;&#046;&#111;&#114;&#103;</a><br />
+      34 E. 29th ST, 2nd FL, NY, NY 10016<br />
+      (212) 684-8112<br /> 
+sll content <a href="#">copyleft</a> unless otherwise stated <a href="#">not responsible</a> for content...
+   </small>
+</div>
+
+</body>
+</html>
+
+
+
+
diff --git a/etc/producer/batchnav.template b/etc/producer/batchnav.template
new file mode 100755 (executable)
index 0000000..258ae85
--- /dev/null
@@ -0,0 +1,35 @@
+<comment>
+<!-- old version -->
+       ${batch.first.index}<p>
+       <list batch.all as b><a href="${docPrefix}${b.identifier}${docSuffix}">${b.index}</a><if b.index!=batch.last.index>&nbsp;| </if></list>
+</comment>
+
+
+<script type="text/javascript">
+<!--
+function Go(x) {
+ if(x == "nothing") {
+   document.forms[0].reset();
+   document.forms[0].elements[0].blur();
+   return;
+ }
+ else if(x == "end")
+   top.location.href = parent.frames[1].location;
+ else {
+   location.href = x;
+   document.forms[0].reset();
+   document.forms[0].elements[0].blur();
+ }
+}
+//-->
+</script>
+<form action="">
+<select size=1 name="Auswahl"
+  onChange="Go(this.form.Auswahl.options[this.form.Auswahl.options.selectedIndex].value)"
+  class="navform">
+<option value="nothing">Seite ausw&auml;hlen</option>
+<list batch.all as b>
+<option value="${docPrefix}${b.identifier}${docSuffix}">${b.index}</option></list>
+<option value="../index.shtml">STARTPAGE</option>
+</select>
+</form>
\ No newline at end of file
diff --git a/etc/producer/cities.inc b/etc/producer/cities.inc
new file mode 100755 (executable)
index 0000000..3ba18bc
--- /dev/null
@@ -0,0 +1,31 @@
+<!-- cities.inc 
+list of linked indymedia cities, for inclusion in all the indymedia sidebars
+generated Fri,  4 Oct 2002 00:51:29 -0700  
+WARNING DO NOT EDIT THIS FILE.
+THIS FILE IS GENERATED AUTOMATICALLY VIA
+http://www.indymedia.org/contact/cities.php
+mailto: mark --( at )-- indymedia.org
+-->
+<br />
+<a href="http://www.indymedia.org/">www.indymedia.org</a><br />
+<br />
+
+<b>Projects</b><br /><a href="http://climate.indymedia.org/">climate</a><br /><a href="http://print.indymedia.org/">print</a><br /><a href="http://radio.indymedia.org/">radio</a><br /><a href="http://satellite.indymedia.org/">satellite tv</a><br /><a href="http://www.indymedia.org/projects.php3">video</a><br /><br />
+
+<b>Pacific</b><br /><a href="http://adelaide.indymedia.org/">adelaide</a><br /><a href="http://www.indymedia.org.nz/">aotearoa</a><br /><a href="http://brisbane.indymedia.org/">brisbane</a><br /><a href="http://jakarta.indymedia.org/">jakarta</a><br /><a href="http://melbourne.indymedia.org/">melbourne</a><br /><a href="http://sydney.indymedia.org/">sydney</a><br /><br />
+
+<b>Africa</b><br /><a href="http://nigeria.indymedia.org/">nigeria</a><br /><a href="http://southafrica.indymedia.org/">south africa</a><br /><br />
+
+<b>Europe</b><br /><a href="http://athens.indymedia.org/">athens</a><br /><a href="http://austria.indymedia.org/">austria</a><br /><a href="http://barcelona.indymedia.org/">barcelona</a><br /><a href="http://belgium.indymedia.org/">belgium</a><br /><a href="http://bristol.indymedia.org/">bristol</a><br /><a href="http://cyprus.indymedia.org">cyprus</a><br /><a href="http://euskalherria.indymedia.org/">euskal herria</a><br /><a href="http://www.vaikuttava.net/">finland</a><br /><a href="http://germany.indymedia.org/">germany</a><br /><a href="http://ireland.indymedia.org/">ireland</a><br /><a href="http://italy.indymedia.org/">italy</a><br /><a href="http://madrid.indymedia.org/">madrid</a><br /><a href="http://indymedia.nl">netherlands</a><br /><a href="http://www.indymedia.no/">norway</a><br /><a href="http://pt.indymedia.org/">portugal</a><br /><a href="http://russia.indymedia.org/">russia</a><br /><a href="http://sweden.indymedia.org/">sweden</a><br /><a href="http://switzerland.indymedia.org/">switzerland</a><br /><a href="http://thessaloniki.indymedia.org/">thessaloniki</a><br /><a href="http://www.indymedia.org.uk/">united kingdom</a><br /><br />
+
+<b>Canada</b><br /><a href="http://alberta.indymedia.org/">alberta</a><br /><a href="http://hamilton.indymedia.org/">hamilton</a><br /><a href="http://maritimes.indymedia.org/">maritimes</a><br /><a href="http://montreal.indymedia.org/">montreal</a><br /><a href="http://ontario.indymedia.org/">ontario</a><br /><a href="http://ottawa.indymedia.org/">ottawa</a><br /><a href="http://quebec.indymedia.org/">quebec</a><br /><a href="http://thunderbay.indymedia.org/">thunder bay</a><br /><a href="http://vancouver.indymedia.org/">vancouver</a><br /><a href="http://victoria.indymedia.org/">victoria</a><br /><a href="http://windsor.indymedia.org/">windsor</a><br /><br />
+
+<b>Latin America</b><br /><a href="http://argentina.indymedia.org/">argentina</a><br /><a href="http://bolivia.indymedia.org/">bolivia</a><br /><a href="http://brasil.indymedia.org/">brasil</a><br /><a href="http://chiapas.indymedia.org/">chiapas</a><br /><a href="http://colombia.indymedia.org/">colombia</a><br /><a href="http://ecuador.indymedia.org/">ecuador</a><br /><a href="http://mexico.indymedia.org/">mexico</a><br /><a href="http://bolivia.indymedia.org/es/qollasuyu/qollasuyu.shtml">qollasuyu</a><br /><a href="http://argentina.indymedia.org/features/rosario/">rosario</a><br /><a href="http://www.tijuanaimc.org/">tijuana</a><br /><a href="http://uruguay.indymedia.org/">uruguay</a><br /><br />
+
+<b>South Asia</b><br /><a href="http://india.indymedia.org/">india</a><br /><a href="http://mumbai.indymedia.org/">mumbai</a><br /><br />
+
+<b>West Asia</b><br /><a href="http://indymedia.org.il/">israel</a><br /><a href="http://jerusalem.indymedia.org/">palestine</a><br /><br />
+
+<b>United States</b><br /><a href="http://arizona.indymedia.org/">arizona</a><br /><a href="http://atlanta.indymedia.org/">atlanta</a><br /><a href="http://austin.indymedia.org/">austin</a><br /><a href="http://baltimore.indymedia.org/">baltimore</a><br /><a href="http://boston.indymedia.org/">boston</a><br /><a href="http://buffalo.indymedia.org/">buffalo</a><br /><a href="http://cfl.indymedia.org/">central florida</a><br /><a href="http://chicago.indymedia.org/">chicago</a><br /><a href="http://www.madhattersimc.org/">danbury, ct</a><br /><a href="http://dc.indymedia.org/">dc</a><br /><a href="http://eugene.indymedia.org/">eugene</a><br /><a href="http://hawaii.indymedia.org/">hawaii</a><br /><a href="http://houston.indymedia.org">houston</a><br /><a href="http://ithaca.indymedia.org/">ithaca</a><br /><a href="http://la.indymedia.org/">la</a><br /><a href="http://madison.indymedia.org/">madison</a><br /><a href="http://maine.indymedia.org/">maine</a><br /><a href="http://www.michiganimc.org/">michigan</a><br /><a href="http://milwaukee.indymedia.org/">milwaukee</a><br /><a href="http://twincities.indymedia.org/">minneapolis/st. paul</a><br /><a href="http://newjersey.indymedia.org/">new jersey</a><br /><a href="http://newmexico.indymedia.org/">new mexico</a><br /><a href="http://nycap.indymedia.org/">new york capitol</a><br /><a href="http://chapelhill.indymedia.org/">north carolina</a><br /><a href="http://nyc.indymedia.org/">nyc</a><br /><a href="http://www.phillyimc.org/">philadelphia</a><br /><a href="http://portland.indymedia.org/">portland</a><br /><a href="http://richmond.indymedia.org/">richmond</a><br /><a href="http://rochester.indymedia.org/">rochester</a><br /><a href="http://rockymountain.indymedia.org/">rocky mountain</a><br /><a href="http://sandiego.indymedia.org/">san diego</a><br /><a href="http://sf.indymedia.org/">san francisco bay area</a><br /><a href="http://santacruz.indymedia.org/">santa cruz, ca</a><br /><a href="http://seattle.indymedia.org/">seattle</a><br /><a href="http://stlouis.indymedia.org/">st louis</a><br /><a href="http://urbana.indymedia.org/">urbana-champaign</a><br /><a href="http://utah.indymedia.org/">utah</a><br /><a href="http://vermont.indymedia.org/">vermont</a><br /><a href="http://www.wmassimc.org/">western mass</a><br /><br />
+
+<b>Process</b><br /><a href="http://global.indymedia.org/">discussion</a><br /><a href="http://www.indymedia.org/fbi/">fbi/legal updates</a><br /><a href="http://process.indymedia.org/faq.php3">indymedia faq</a><br /><a href="http://lists.indymedia.org/">mailing lists</a><br /><a href="http://docs.indymedia.org/">process & imc docs</a><br /><a href="http://tech.indymedia.org/">tech</a><br /><a href="http://volunteer.indymedia.org/">volunteer</a><br /><br />
\ No newline at end of file
diff --git a/etc/producer/featurearchive.template b/etc/producer/featurearchive.template
new file mode 100755 (executable)
index 0000000..5133f19
--- /dev/null
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=${config["Mir.DefaultHTMLCharset"]}">
+    <title>${config["Mir.Name"]} | ${lang("featurearchive.title")}</title>
+  <meta name="keywords" content="${lang("general.keywords")}">
+  <meta name="description" content="${lang("featurearchive.title")}">
+  <meta name="dc:title" content="${lang("featurearchive.title")}">
+  <meta name="dc:creator" content="">
+  <meta name="dc:subject" content="${lang("featurearchive.title")}">
+  <meta name="dc:description" content="${lang("featurearchive.title")}">
+  <meta name="dc:publisher" content="">
+  <meta name="dc:date" content="${config.now.formatted.dc}">
+  <meta name="dc:language" content="${language.code}">
+  <meta name="dc:coverage" content="">
+  <meta name="dc:rights" content="">
+  <meta http-equiv="expires" content="599">
+  <meta http-equiv="pragma" content="no-cache">
+  <style type="text/css">
+    body, h1, h2, h3, h4, h5, h6, p, li, dt, dd, div, td, blockquote, div, span
+                   {font-family:'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;}
+    a              {text-decoration:none;}
+    #searchfield   {font-size: 12px; width:113px; height:16px;  background-color:#aaaaaa;}
+    #searchselect  {font-size: 12px; width:120px; height:22px;  background-color:#aaaaaa;}
+    #searchbutton  {font-size: 12px; width:120px; height:20px; background-color:#aaaaaa; text-align: right;}
+  </style>
+</head>
+   
+<body bgcolor="#dddddd" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" link="#003399" alink="#cc0033" vlink="#660033" >
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+  <tr>
+    <td valign="top">
+      <table cellpadding="0" cellspacing="0" border="0" width="100%" bgcolor="#cc0033">
+        <tr>
+          <td><a href="${config["Producer.DocRoot"]}/${language.code}/"><img src="${config["Producer.DocRoot"]}/img/logo.gif" width="120" height="120" alt="((i))" border="0"></a></td>
+        </tr>
+      </table>
+      <table cellpadding="4" cellspacing="0" border="0" width="100%" bgcolor="#cc0033">
+        <tr>
+          <td><a href="${config["Producer.DocRoot"]}/${language.code}/">&nbsp;<font color="#dddddd" size="-1"><b>${lang("general.start")}</b></font></a></td>
+        </tr>
+      </table>
+      <br>
+      <!--#include virtual="../navigation.inc" -->
+    </td>
+    <td valign="top" width="100%">
+      <table cellpadding="4" cellspacing="0" border="0" width="100%" bgcolor="#cc0033">
+        <tr>
+          <td>
+            &nbsp;&nbsp;
+            <font color="#dddddd" size="-1"><b>
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/mission.shtml"><font color="#dddddd">${lang("general.menu.missionStatement")}&nbsp;&gt;&gt;</font></a> &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/moderation.shtml"><font color="#dddddd">${lang("general.menu.moderation")}&nbsp;&gt;&gt;</font></a>  &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/support.shtml"><font color="#dddddd">${lang("general.menu.support")}&nbsp;&gt;&gt;</font></a>  &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/mailinglists.shtml"><font color="#dddddd">${lang("general.menu.mailinglists")}&nbsp;&gt;&gt;</font></a> &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/participate.shtml"><font color="#dddddd">${lang("general.menu.participate")}&nbsp;&gt;&gt;</font></a>
+            </b></font>
+          </td>
+        </tr>
+      </table>
+      <table cellpadding="0" cellspacing="0" border="0" width="100%">
+        <tr>
+          <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+          <td width="100%">
+            <br>
+            <br>
+            <font color="#cc0033" size="+2"><b>${lang("featurearchive.title")}</b></font>
+            <br>
+            <br>
+          </td>
+                 <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+        </tr>
+        <tr>
+          <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+          <td>
+            <br>
+              <!--- articles --->
+                <list articles as a>
+                 <assign aorig=a.to_original>
+                 <if languagepreference>
+                   <assign i=a.to_translation(languagepreference)>
+                 <else>
+                   <assign i=a>
+                 </if>
+
+                  <p><font size="+1">
+                  <a href="${config["Producer.DocRoot"]}/${language.code}/${i.date.formatted["yyyy'/'MM"]}/${i.id}.shtml"><b>${i.title}</b></a>
+                  </font><br>
+                     <font size="-2">${aorig.creator} <if aorig.id!=i.id>(${lang("general.translatedby", i.creator)})</if><if i.creator || aorig.creator>, </if> ${aorig.creationdate.formatted["dd-MM-yyyy - HH:mm"]}</font></p> 
+                  <p><font size="-1">
+                  <if aorig.to_media_audio >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${config["Producer.DocRoot"]}/img/${aorig.to_media_audio[0]["big_icon"]}">
+                  </if>
+                  <if aorig.to_media_video >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${config["Producer.DocRoot"]}/img/${aorig.to_media_video[0]["big_icon"]}">
+                  </if>
+                  <if aorig.to_media_other >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${config["Producer.DocRoot"]}/img/${aorig.to_media_other[0]["big_icon"]}">
+                  </if>
+                  <if aorig.to_media_images >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${aorig.to_media_images[0]["icon_path"]}"
+                       width="${aorig.to_media_images[0]["icon_width"]}"
+                       height="${aorig.to_media_images[0]["icon_height"]}"
+                       border=0 alt="${aorig.to_media_images[0]["title"]}">
+                  </if>
+                  ${i.description_parsed}
+                  <br clear="all">
+                  <a href="${config["Producer.DocRoot"]}/${language.code}${i.publish_path}${i.id}.shtml"><b>${lang("general.readmore")} &gt;&gt;</b></a>
+                  </font></p>
+
+                  <br>
+                </list>
+              <!--- /articles --->
+          </td>
+                 <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+
+<!-- the rest -->
+  <tr>
+  <td>&nbsp;</td>
+  <td>
+  <table width="100%">
+                       <!--- Page Navigation --->
+               <tr><td colspan="4" bgcolor="#CCCCCC"><br></td></tr>
+               <tr>
+                       <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+                       <td align="left" valign="top">
+                         <if batch.current.index!=batch.first.index>
+                <a href="${docPrefix}${batch.previous.identifier}${docSuffix}"><font><b>&lt;&lt; ${lang("general.page.prefix")} ${batch.previous.index}</b></font></a>
+              </if>
+              <if batch.current.index!=batch.first.index && batch.current.index!=batch.last.index>
+                |
+              </if>
+              <if batch.next>
+                <a href="${docPrefix}${batch.next.identifier}${docSuffix}"><font><b>${lang("general.page.prefix")} ${batch.next.index} &gt;&gt;</b></font></a>
+              </if>
+                       </td>
+                       <td>
+                       &nbsp;
+                       </td>
+                       <td align="right" valign="top">
+                       <!--#include virtual="${docPrefix}nav${docSuffix}" -->
+                       </td>
+                       <td>&nbsp;&nbsp;&nbsp;&nbsp;<br><br><br></td>
+               </tr>
+  </table>
+
+
+  </td>
+  </tr>
+</table>
+</body>
+</html>
diff --git a/etc/producer/html2fo.xsl b/etc/producer/html2fo.xsl
new file mode 100755 (executable)
index 0000000..ea273cf
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+                      xmlns:fo="http://www.w3.org/1999/XSL/Format"
+version="1.0" >
+
+<!-- This stylesheet replaces the <BR /> tags that Mir 
+uses to break paragraphs with empty blocks, 
+which do the same thing in XSL:FO -->
+
+<xsl:template match="br">
+  <fo:block />  
+</xsl:template>
+
+<xsl:template match="@*|*|processing-instruction()|comment()">
+  <xsl:copy>
+    <xsl:apply-templates select="*|@*|text()|processing-instruction()|comment()" />
+  </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/etc/producer/images/arrow_down.gif b/etc/producer/images/arrow_down.gif
new file mode 100755 (executable)
index 0000000..b2b5e2f
Binary files /dev/null and b/etc/producer/images/arrow_down.gif differ
diff --git a/etc/producer/images/audio_big.gif b/etc/producer/images/audio_big.gif
new file mode 100755 (executable)
index 0000000..e1473c6
Binary files /dev/null and b/etc/producer/images/audio_big.gif differ
diff --git a/etc/producer/images/audio_small.gif b/etc/producer/images/audio_small.gif
new file mode 100755 (executable)
index 0000000..4a2677f
Binary files /dev/null and b/etc/producer/images/audio_small.gif differ
diff --git a/etc/producer/images/background.jpg b/etc/producer/images/background.jpg
new file mode 100755 (executable)
index 0000000..38bf3d4
Binary files /dev/null and b/etc/producer/images/background.jpg differ
diff --git a/etc/producer/images/background2.jpg b/etc/producer/images/background2.jpg
new file mode 100755 (executable)
index 0000000..e2f2dfc
Binary files /dev/null and b/etc/producer/images/background2.jpg differ
diff --git a/etc/producer/images/cleft.gif b/etc/producer/images/cleft.gif
new file mode 100755 (executable)
index 0000000..5a3f14a
Binary files /dev/null and b/etc/producer/images/cleft.gif differ
diff --git a/etc/producer/images/extlink.gif b/etc/producer/images/extlink.gif
new file mode 100755 (executable)
index 0000000..4366ee6
Binary files /dev/null and b/etc/producer/images/extlink.gif differ
diff --git a/etc/producer/images/intlink.gif b/etc/producer/images/intlink.gif
new file mode 100755 (executable)
index 0000000..bc10b45
Binary files /dev/null and b/etc/producer/images/intlink.gif differ
diff --git a/etc/producer/images/link_small.gif b/etc/producer/images/link_small.gif
new file mode 100755 (executable)
index 0000000..600a830
Binary files /dev/null and b/etc/producer/images/link_small.gif differ
diff --git a/etc/producer/images/logo.gif b/etc/producer/images/logo.gif
new file mode 100755 (executable)
index 0000000..0168148
Binary files /dev/null and b/etc/producer/images/logo.gif differ
diff --git a/etc/producer/images/mail_small.gif b/etc/producer/images/mail_small.gif
new file mode 100755 (executable)
index 0000000..13cc859
Binary files /dev/null and b/etc/producer/images/mail_small.gif differ
diff --git a/etc/producer/images/maillink.gif b/etc/producer/images/maillink.gif
new file mode 100755 (executable)
index 0000000..1c2e50d
Binary files /dev/null and b/etc/producer/images/maillink.gif differ
diff --git a/etc/producer/images/photo_big.gif b/etc/producer/images/photo_big.gif
new file mode 100755 (executable)
index 0000000..1481a4e
Binary files /dev/null and b/etc/producer/images/photo_big.gif differ
diff --git a/etc/producer/images/photo_small.gif b/etc/producer/images/photo_small.gif
new file mode 100755 (executable)
index 0000000..5f1796c
Binary files /dev/null and b/etc/producer/images/photo_small.gif differ
diff --git a/etc/producer/images/space.gif b/etc/producer/images/space.gif
new file mode 100755 (executable)
index 0000000..bdab340
Binary files /dev/null and b/etc/producer/images/space.gif differ
diff --git a/etc/producer/images/text_big.gif b/etc/producer/images/text_big.gif
new file mode 100755 (executable)
index 0000000..2a31faa
Binary files /dev/null and b/etc/producer/images/text_big.gif differ
diff --git a/etc/producer/images/text_small.gif b/etc/producer/images/text_small.gif
new file mode 100755 (executable)
index 0000000..ec24bd6
Binary files /dev/null and b/etc/producer/images/text_small.gif differ
diff --git a/etc/producer/images/video_big.gif b/etc/producer/images/video_big.gif
new file mode 100755 (executable)
index 0000000..03a683a
Binary files /dev/null and b/etc/producer/images/video_big.gif differ
diff --git a/etc/producer/images/video_small.gif b/etc/producer/images/video_small.gif
new file mode 100755 (executable)
index 0000000..d61cd29
Binary files /dev/null and b/etc/producer/images/video_small.gif differ
diff --git a/etc/producer/languagebar.template b/etc/producer/languagebar.template
new file mode 100755 (executable)
index 0000000..737336b
--- /dev/null
@@ -0,0 +1 @@
+[ insert language bar ]
\ No newline at end of file
diff --git a/etc/producer/navigation.template b/etc/producer/navigation.template
new file mode 100755 (executable)
index 0000000..3079402
--- /dev/null
@@ -0,0 +1,141 @@
+      <ul class="leftNav">
+       <li><a href="#">Home</a></li>
+       <li><a href="#">Newswire</a> 
+            <ul>
+               <li><a href="#">By Category</a></li>
+               <li><a href="#">Local Newswire</a></li>
+               <li><a href="#">Global Newswire</a></li>
+               <li><a href="#">Advanced Search</a></li>
+            </ul>
+         </li>
+       <li><a href="#">Open Publishing</a>
+            <ul>
+               <li><a href="#">publish your news</a></li>
+               <li><a href="#">Editorial guidelines</a></li>
+               <li><a href="#">Open Publishing Guide</a></li>
+               </ul>
+         </li>
+       <li><a href="#">Indymedia NYC</a>
+            <ul>
+               <li><a href="#">Contact Us</a></li>
+               <li><a href="#">Get Involved</a></li>
+               <li><a href="#">Working Groups</a></li>
+               </ul>
+         </li>
+       <li><a href="#">Indymedia Network</a>
+            <ul>
+               <li><a href="#">about indymedia</a></li>
+               <li><a href="#">Frequent questions</a></li>
+               <li><a href="#">how to get involved</a></li>
+               </ul>
+         </li>
+      </ul>
+      <div class="cities">
+         <p class="title">
+            Global Network
+         </p>
+         <p>
+            <a href="http://www.indymedia.org/">www.indymedia.org</a>
+         </p>
+         <p class="title">
+            Africa
+         </p>
+         <p>
+            <a href="http://nigeria.indymedia.org/">nigeria</a><br />
+            <a href="http://southafrica.indymedia.org/">south africa</a>
+         </p>         
+         <p class="title">
+            Europe
+         </p>
+         <p>
+            <a href="http://athens.indymedia.org/">athens</a><br />
+            <a href="http://austria.indymedia.org/">austria</a><br />
+            <a href="http://barcelona.indymedia.org/">barcelona</a><br />
+            <a href="http://belgium.indymedia.org/">belgium</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>
+         <p class="title">
+            Canada
+         </p>
+         <p>
+            <a href="http://alberta.indymedia.org/">alberta</a><br />
+            <a href="http://hamilton.indymedia.org/">hamilton</a><br />
+            <a href="http://maritimes.indymedia.org/">maritimes</a><br />
+            <a href="http://montreal.indymedia.org/">montreal</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>         
+         <p class="title">
+            Latin America
+         </p>
+         <p>
+            <a href="http://argentina.indymedia.org/">argentina</a><br />
+            <a href="http://bolivia.indymedia.org/">bolivia</a><br />
+            <a href="http://brasil.indymedia.org/">brasil</a><br />
+            <a href="http://chiapas.indymedia.org/">chiapas</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>         
+         <p class="title">
+            Pacific
+         </p>
+         <p>
+            <a href="http://adelaide.indymedia.org/">adelaide</a><br />
+            <a href="http://www.indymedia.org.nz/">aotearoa</a><br />
+            <a href="http://brisbane.indymedia.org/">brisbane</a><br />
+            <a href="http://jakarta.indymedia.org/">jakarta</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>         
+         <p class="title">
+            South Asia
+         </p>
+         <p>
+            <a href="http://india.indymedia.org/">india</a><br />
+            <a href="http://mumbai.indymedia.org/">mumbai</a>
+         </p>         
+         <p class="title">
+            United States
+         </p>
+         <p>
+            <a href="http://arizona.indymedia.org/">arizona</a><br />
+            <a href="http://atlanta.indymedia.org/">atlanta</a><br />
+            <a href="http://austin.indymedia.org/">austin</a><br />
+            <a href="http://baltimore.indymedia.org/">baltimore</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>         
+         <p class="title">
+            West Asia
+         </p>
+         <p>
+            <a href="http://indymedia.org.il/">israel</a><br />
+            <a href="http://jerusalem.indymedia.org/">palestine</a>
+         </p>         
+         <p class="title">
+            Process
+         </p>
+         <p>
+            <a href="http://global.indymedia.org/">discussion</a><br />
+            <a href="http://www.indymedia.org/fbi/">fbi/legal updates</a><br />
+            <a href="http://process.indymedia.org/faq.php3">indymedia faq</a><br />
+            <a href="http://lists.indymedia.org/">mailing lists</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>         
+         <p class="title">
+            Projects
+         </p>
+         <p>
+            <a href="http://climate.indymedia.org/">climate</a><br />
+            <a href="http://print.indymedia.org/">print</a><br />
+            <a href="http://radio.indymedia.org/">radio</a><br />
+            <a href="http://satellite.indymedia.org/">satellite tv</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>
+         <div class="credits">      
+            <p class="title">
+               Credits
+            </p>
+            <p>
+               <a href="http://mir.indymedia.org/">mir.indymedia.org</a><br />
+               <a href="#">imc tech</a><br />
+               <a href="https://barcelona.indymedia.org/nyc/servlet/Mir">admin</a>
+            </p>         
+         </div>
+      </div>
\ No newline at end of file
diff --git a/etc/producer/newswirearchive.template b/etc/producer/newswirearchive.template
new file mode 100755 (executable)
index 0000000..0cca4af
--- /dev/null
@@ -0,0 +1,163 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=${config["Mir.DefaultHTMLCharset"]}">
+    <title>${config["Mir.Name"]} | ${lang("newswirearchive.title")}</title>
+  <meta name="keywords" content="${lang("general.keywords")}">
+  <meta name="description" content="${lang("newswirearchive.title")}">
+  <meta name="dc:title" content="${lang("newswirearchive.title")}">
+  <meta name="dc:creator" content="">
+  <meta name="dc:subject" content="${lang("newswirearchive.title")}">
+  <meta name="dc:description" content="${lang("newswirearchive.title")}">
+  <meta name="dc:publisher" content="">
+  <meta name="dc:date" content="${config.now.formatted.dc}">
+  <meta name="dc:language" content="${language.code}">
+  <meta name="dc:coverage" content="">
+  <meta name="dc:rights" content="">
+  <meta http-equiv="expires" content="599">
+  <meta http-equiv="pragma" content="no-cache">
+  <style type="text/css">
+    body, h1, h2, h3, h4, h5, h6, p, li, dt, dd, div, td, blockquote, div, span
+                   {font-family:'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;}
+    a              {text-decoration:none;}
+    #searchfield   {font-size: 12px; width:113px; height:16px;  background-color:#aaaaaa;}
+    #searchselect  {font-size: 12px; width:120px; height:22px;  background-color:#aaaaaa;}
+    #searchbutton  {font-size: 12px; width:120px; height:20px; background-color:#aaaaaa; text-align: right;}
+  </style>
+</head>
+   
+<body bgcolor="#dddddd" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" link="#003399" alink="#cc0033" vlink="#660033" >
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+  <tr>
+    <td valign="top">
+      <table cellpadding="0" cellspacing="0" border="0" width="100%" bgcolor="#cc0033">
+        <tr>
+          <td><a href="${config["Producer.DocRoot"]}/${language.code}/"><img src="${config["Producer.DocRoot"]}/img/logo.gif" width="120" height="120" alt="((i))" border="0"></a></td>
+        </tr>
+      </table>
+      <table cellpadding="4" cellspacing="0" border="0" width="100%" bgcolor="#cc0033">
+        <tr>
+          <td><a href="${config["Producer.DocRoot"]}/${language.code}/">&nbsp;<font color="#dddddd" size="-1"><b>${lang("general.start")}</b></font></a></td>
+        </tr>
+      </table>
+      <br>
+      <!--#include virtual="../navigation.inc" -->
+    </td>
+    <td valign="top" width="100%">
+      <table cellpadding="4" cellspacing="0" border="0" width="100%" bgcolor="#cc0033">
+        <tr>
+          <td>
+            &nbsp;&nbsp;
+            <font color="#dddddd" size="-1"><b>
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/mission.shtml"><font color="#dddddd">${lang("general.menu.missionStatement")}&nbsp;&gt;&gt;</font></a> &nbsp; 
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/moderation.shtml"><font color="#dddddd">${lang("general.menu.moderation")}&nbsp;&gt;&gt;</font></a>  &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/support.shtml"><font color="#dddddd">${lang("general.menu.support")}&nbsp;&gt;&gt;</font></a>  &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/mailinglists.shtml"><font color="#dddddd">${lang("general.menu.mailinglists")}&nbsp;&gt;&gt;</font></a> &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/participate.shtml"><font color="#dddddd">${lang("general.menu.participate")}&nbsp;&gt;&gt;</font></a>
+            </b></font>
+          </td>
+        </tr>
+      </table>
+      <table cellpadding="0" cellspacing="0" border="0" width="100%">
+        <tr>
+          <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+          <td width="100%">
+            <br>
+            <br>
+            <font color="#cc0033" size="+2"><b>${lang("newswirearchive.title")}</b></font>
+            <br>
+            <br>
+          </td>
+                 <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+        </tr>
+        <tr>
+          <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+          <td>
+            <br>
+              <!--- articles --->
+                <list articles as a>
+                 <assign aorig=a.to_original>
+                 <if languagepreference>
+                   <assign i=a.to_translation(languagepreference)>
+                 <else>
+                   <assign i=a>
+                 </if>
+
+
+                  <p><font size="+1">
+                  <a href="${config["Producer.DocRoot"]}/${language.code}/${i.date.formatted["yyyy'/'MM"]}/${i.id}.shtml"><b>${i.title}</b></a>
+                  </font><br>
+                     <font size="-2">${aorig.creator} <if aorig.id!=i.id>(${lang("general.translatedby", i.creator)})</if><if i.creator || aorig.creator>, </if> ${aorig.creationdate.formatted["dd-MM-yyyy - HH:mm"]}</font></p>
+                  <p><font size="-1">
+                  <if aorig.to_media_audio >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${config["Producer.DocRoot"]}/img/${aorig.to_media_audio[0]["big_icon"]}">
+                  </if>
+                  <if aorig.to_media_video >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${config["Producer.DocRoot"]}/img/${aorig.to_media_video[0]["big_icon"]}">
+                  </if>
+                  <if aorig.to_media_other >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${config["Producer.DocRoot"]}/img/${aorig.to_media_other[0]["big_icon"]}">
+                  </if>
+                  <if aorig.to_media_images >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${aorig.to_media_images[0]["icon_path"]}"
+                       width="${aorig.to_media_images[0]["icon_width"]}"
+                       height="${aorig.to_media_images[0]["icon_height"]}"
+                       border=0 alt="${aorig.to_media_images[0]["title"]}">
+                  </if>
+                  ${i.description_parsed}
+                  <br clear="all">
+                  <a href="${config["Producer.DocRoot"]}/${language.code}${i.publish_path}${i.id}.shtml"><b>${lang("general.readmore")} &gt;&gt;</b></a>
+                  </font></p>
+
+                  <br>
+                </list>
+              <!--- /articles --->
+          </td>
+                 <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+        </tr>
+
+      </table>
+    </td>
+  </tr>
+
+<!-- the rest -->
+  <tr>
+  <td>&nbsp;</td>
+  <td>
+  <table width="100%">
+                       <!--- Page Navigation --->
+               <tr><td colspan="4" bgcolor="#CCCCCC"><br></td></tr>
+               <tr>
+                       <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+                       <td align="left" valign="top">
+                         <if batch.current.index!=batch.first.index>
+                <a href="${docPrefix}${batch.previous.identifier}${docSuffix}"><font><b>&lt;&lt; ${lang("general.page.prefix")} ${batch.previous.index}</b></font></a>
+              </if>
+              <if batch.current.index!=batch.first.index && batch.current.index!=batch.last.index>
+                |
+              </if>
+              <if batch.next>
+                <a href="${docPrefix}${batch.next.identifier}${docSuffix}"><font><b>${lang("general.page.prefix")} ${batch.next.index} &gt;&gt;</b></font></a>
+              </if>
+                       </td>
+                       <td>
+                       &nbsp;
+                       </td>
+                       <td align="right" valign="top">
+                       <!--#include virtual="${docPrefix}nav${docSuffix}" -->
+                       </td>
+                       <td>&nbsp;&nbsp;&nbsp;&nbsp;<br><br><br></td>
+               </tr>
+  </table>
+
+
+  </td>
+  </tr>
+</table>
+</body>
+</html>
diff --git a/etc/producer/newswireinclude.template b/etc/producer/newswireinclude.template
new file mode 100755 (executable)
index 0000000..a04027a
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<title>newswire</title>
+<link type="text/css" rel="stylesheet" title="default" href="/inc/default.css" />
+<script type="text/javascript">
+function resizeIframe() {
+       i = parent.document.getElementByName(window.name)
+//     i = parent.document.getElementById(window.name)
+       iHeight = document.body.scrollHeight
+//     i.height = iHeight + 10
+       i.style.height = iHeight + 10 + "px"
+}
+</script>
+</head>
+<body style="background-color: #D8E0C3" onload="resizeIframe()">
+
+<div style="text-align: center">
+
+
+    <table cellpadding="8" cellspacing="0" border="0" width="100%">
+      <tr>
+        <td bgcolor="#cc0033">
+          <font size="+1" color="#dddddd"><b><a name="newswire">${whichnewswire}</a></b></font><br />
+       <a href="/${language.code}/newswireinclude.shtml">Open Publishing</a> |         <a href="/${language.code}/rssnewswireinclude.shtml">Community Blogs</a>
+        </td>
+      </tr>
+      <tr>
+        <td>
+
+          <!-- newswire -->
+          <font size="-1">
+            <list newswire as nn>
+             <assign norig=nn.to_original>
+             <if languagepreference>
+               <assign n=nn.to_translation(languagepreference)>
+             <else>
+                <assign n=nn>
+             </if>
+           
+
+             <img src="${norig.to_media_icon.tiny_icon}" alt="${norig.to_media_icon.icon_alt}" height="10" width="12">
+<if n.to_original.to_article_type==articletype.newswire>
+              <a href="${config["Producer.DocRoot"]}/${language.code}/${n.date.formatted.yyyy}/${n.date.formatted.MM}/${n.id}.shtml">${n.title}</a>
+
+<else>
+              <a href="${n.source}">${n.title}</a>
+</if>
+              <br>
+              <font size="-2">${n.creationdate.formatted["dd-MM-yyyy HH:mm"]}</font><br>
+              <br>
+            </list>
+          </font>
+          <!-- /newswire -->
+          <img src="/img/space.gif" width="184" height="1" border="0">
+
+        </td>
+      </tr>
+    </table>
+    <br>
+
+    <table cellpadding="8" cellspacing="0" border="0" width="100%">
+      <tr>
+        <td bgcolor="#cc0033">
+          <font size="+1" color="#dddddd"><b><a name="newswire">${lang("startpage.rsswire")}</a></b></font>
+        </td>
+      </tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/etc/producer/printablecontent.template b/etc/producer/printablecontent.template
new file mode 100755 (executable)
index 0000000..164ee25
--- /dev/null
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- example for a simple fo file. At the beginning the page layout is set. 
+  Below fo:root there is always 
+- a single fo:layout-master-set which defines one or more page layouts
+- an optional fo:declarations 
+- and a sequence of one or more fo:page-sequences containing the text and formatting instructions 
+-->
+
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+  <fo:layout-master-set>
+  <!-- fo:layout-master-set defines in its children the page layout: 
+       the pagination and layout specifications
+      - page-masters: have the role of describing the intended subdivisions 
+                       of a page and the geometry of these subdivisions 
+                      In this case there is only a simple-page-master which defines the 
+                      layout for all pages of the text
+  -->
+    <!-- layout information -->
+    <fo:simple-page-master master-name="simple"
+                  page-height="29.7cm" 
+                  page-width="21cm"
+                  margin-top="1cm" 
+                  margin-bottom="2cm" 
+                  margin-left="2.5cm" 
+                  margin-right="2.5cm">
+      <fo:region-body margin-top="3cm" />
+
+      <fo:region-before extent="5.0cm" />
+      <fo:region-after extent="1.5cm"/>
+    </fo:simple-page-master>
+  </fo:layout-master-set>
+  <!-- end: defines page layout -->
+
+
+  <!-- start page-sequence
+       here comes the text (contained in flow objects)
+       the page-sequence can contain different fo:flows 
+       the attribute value of master-name refers to the page layout
+       which is to be used to layout the text contained in this
+       page-sequence-->
+  <fo:page-sequence master-reference="simple">
+  <fo:static-content flow-name="xsl-region-before">
+      <!-- this defines a title -->
+      <fo:block font-size="24pt" 
+            line-height="23pt"
+            space-after.optimum="5pt"
+            background-color="black"
+            text-align="start">
+<fo:external-graphic  src="file://${config["Producer.Image.Path"]}/banner.png"  />
+      </fo:block>
+<fo:block font-size="10pt" 
+  font-family="serif" 
+  color="black"
+  line-height="12pt">
+  Here is where some descriptive text could go.  A fair use disclaimer
+an attribution of copyright/left rights, etc.  the possibilities are endless.
+  <fo:leader leader-pattern="rule" leader-length="18cm"
+            rule-thickness="1pt" color="black"/>
+</fo:block>
+  
+  </fo:static-content>
+  
+      <!-- start fo:flow
+           each flow is targeted 
+           at one (and only one) of the following:
+           xsl-region-body (usually: normal text)
+           xsl-region-before (usually: header)
+           xsl-region-after  (usually: footer)
+           xsl-region-start  (usually: left margin) 
+           xsl-region-end    (usually: right margin)
+           ['usually' applies here to languages with left-right and top-down 
+            writing direction like English]
+           in this case there is only one target: xsl-region-body
+        -->
+    <fo:flow flow-name="xsl-region-body">
+
+      <!-- each paragraph is encapsulated in a block element
+           the attributes of the block define
+           font-family and size, line-heigth etc. -->
+      
+      <!-- here is the article title -->
+      <fo:block font-size="16pt" 
+                font-family="sans-serif" 
+    font-weight="bold"
+                line-height="18pt"
+                space-after.optimum="3pt"
+                text-align="center">        
+      ${article.title}
+      </fo:block>
+      
+      <!-- here is the article author and date-->
+      <fo:block font-size="11pt" 
+                font-family="sans-serif" 
+                line-height="13pt"
+                space-after.optimum="3pt"
+                text-align="end">       
+      ${article.creator},  ${article.webdb_create_formatted}
+      </fo:block>
+
+
+      <!-- here is the article summary -->
+      <fo:block font-size="11pt" 
+                font-family="sans-serif" 
+    font-weight="bold"
+                line-height="13pt"
+                space-after.optimum="3pt"
+                text-align="justify">       
+      ${article.description_parsed}
+      </fo:block>
+
+
+        <!-- here is the header stuff -->
+<if article.creator_main_url || article.creator_email>
+  <fo:block><fo:leader leader-pattern="rule" leader-length="18cm"
+            rule-thickness="1pt" color="black"/></fo:block>
+</if>
+      <if article.creator_email>
+      <fo:block font-size="10pt" 
+                font-family="sans-serif" 
+                line-height="12pt">
+      Email:    ${article.creator_email}
+      </fo:block>
+      </if>
+      <if article.creator_main_url>
+      <fo:block font-size="10pt" 
+                font-family="sans-serif" 
+                line-height="12pt">
+      URL:    ${article.creator_main_url}
+      </fo:block>
+      </if> 
+      <fo:block><fo:leader leader-pattern="rule" leader-length="18cm"
+            rule-thickness="1pt" color="black"/></fo:block>
+
+      <!-- here is the content -->
+      <fo:block font-size="12pt" 
+                font-family="sans-serif" 
+                line-height="15pt"
+                space-after.optimum="3pt"
+                text-align="justify">
+<list data.formatted_content as fc>
+<if fc.hasImage == "1">
+<fo:table>
+  <fo:table-column column-width="${fc.img_width}px"/>
+  <fo:table-column column-width="8px"/>
+  <fo:table-column column-width="${fc.text_widthCM}cm"/>
+  <fo:table-body>
+    <fo:table-row>
+      <fo:table-cell display-align="center">
+      <fo:external-graphic src="file://${config["Producer.Image.Path"]}${fc.img_src}" content-height="${fc.img_height}px" content-width="${fc.img_width}px" height="${fc.img_height}px" width="${fc.img_width}px" />
+<fo:block font-weight="bold">${fc.img_title}</fo:block>
+      </fo:table-cell>
+      <fo:table-cell >
+      </fo:table-cell>
+      <fo:table-cell >
+      <fo:block text-align="justify">${fc.text}</fo:block>
+      </fo:table-cell>
+    </fo:table-row>
+  </fo:table-body> 
+</fo:table>
+<else>
+<fo:block text-align="justify">${fc.text}</fo:block>
+</if>
+
+</list>
+
+      </fo:block>
+  
+
+
+    </fo:flow> <!-- closes the flow element-->
+  </fo:page-sequence> <!-- closes the page-sequence -->
+</fo:root>
+
+
+
+
+
+
+
+
diff --git a/etc/producer/producers.xml b/etc/producer/producers.xml
new file mode 100755 (executable)
index 0000000..d503656
--- /dev/null
@@ -0,0 +1,723 @@
+
+<!--
+  This XML file defines a set of producers intended for a typical indymedia 
+  site:
+    - a start page
+    - a navigational bar
+    - topic pages
+    - a newswire archive
+    - a feature archive
+    - articles
+    - media
+-->  
+
+<producers>
+  <nodedefinition name="Language">
+    <parameters>
+      <string name="languagecondition" defaultvalue="code != 'ot'"/>
+      <string name="bundle" defaultvalue="bundles.producer" />
+      <node name="sub"/>    
+    </parameters>
+
+    <definition>
+      <List key="languages" table="language" selection="${languagecondition}" order="code"/>
+      <Enumerate key="language" table="language" selection="${languagecondition}" order="code">
+        <Resource bundle="${bundle}" key="lang" language="${language.code}"/>
+        <Define key="pathprefix" value="${language.code}" />
+        <Define key="languagepreference" value="${language.code}" />
+        <sub/>
+        <If condition="language.code=='en'">
+          <then>
+            <Define key="pathprefix" value="or" />
+            <Define key="languagepreference" value="" />
+            <sub/>
+          </then>
+        </If>
+      </Enumerate>
+    </definition>
+  </nodedefinition>
+
+<nodedefinition name="Pull">
+    <parameters>
+      <string name="url"/>
+      <string name="blogname"/>
+      <string name="blogurl"/>
+      <string name="articletype"/>
+    </parameters>
+
+    <definition>
+      <Log message="Pulling 1.0 feed from ${blogname} at ${url}" type="info" />
+      <RSS key="feeditems" url="${url}" encoding="UTF-8" />
+      <Enumerate key="item" list="feeditems['rss:item']" >
+        <Define key="languagecode" value="ot" />
+        <If condition="item['dc:language']">
+          <then>
+            <Set key="languagecode" value="item['dc:language']"/>
+          </then>
+        </If>
+
+        <If condition="item['dc:source']">
+          <then>
+            <Set key="origin" value="item['dc:source']"/>
+          </then>
+          <else>
+            <Set key="origin" value="item.identifier"/>
+          </else>
+        </If>
+
+        <If condition="item['dcterms:hasPart']">
+          <then>
+            <Set key="haspartimg" value="'&lt;img align=&quot;right&quot; src=&quot;'++item['dcterms:hasPart'] ++'&quot; /&gt;' " />
+          </then>
+          <else>
+            <Set key="haspartimg" value="' '" />
+          </else>
+        </If>
+
+        <Set key="present" value="0" />
+        <Enumerate
+          key="article"
+          table="content"
+          selection="source='${utility.escapeJDBCString(origin)}'" limit="1">
+          <Set key="present" value="1" />
+        </Enumerate>
+        <If condition="present==0">
+          <then>
+            <Log message="  new entry from ${blogname}: ${item['rss:title']}" type="info" />
+             <CreateEntity
+               key="article"
+               table="content"
+
+               date="config.now.formatted.yyyymmdd"
+               publish_path="' '"
+               to_publisher="'0'"
+               is_produced="'0'"
+               is_published="'1'"
+               is_html="'1'"
+
+               source="origin"
+               to_article_type="articletype"
+
+               content_data="item['content:encoded']++' '"
+               creator_main_url="blogurl"
+               description="haspartimg++item['rss:description']++' '"
+               to_language="languageCodeToId(languagecode)"
+               title="item['rss:title']++''"
+               webdb_create="config.now"
+               creator="blogname"
+               comment="'Taken from ' ++ blogname"
+             />
+          </then>
+        </If>
+      </Enumerate>
+    </definition>
+  </nodedefinition>
+
+
+  <nodedefinition name="RSSChannel">
+    <parameters>
+      <string name="articleSelection"/>
+      <string name="extratables" defaultvalue="none" />
+      <integer name="limit" defaultvalue="15"/>
+      <string name="channelidentifier" defaultvalue=""/>
+      <string name="channelfilename"/>
+      <string name="channeltitle"/>
+      <string name="articleprefix" defaultvalue="${config['Producer.PublicationHost']}/or" />
+      <string name="iconprefix" defaultvalue="${config['Producer.PublicationHost']}/icon" />
+      <string name="channelpublisher" defaultvalue="${config['Mir.Name']}" />
+      <string name="encoding" defaultvalue="UTF-8" />
+      <string name="channeldescription" defaultvalue=""/>
+      <string name="generator" defaultvalue="/RSS.template" />
+    </parameters>
+
+    <definition>
+      <If condition="extratables == 'none' ">
+        <then>
+          <List key="articles" table="content c" selection="${articleSelection}" order = "c.webdb_create desc, c.date desc" limit="limit" />
+        </then>
+        <else>
+          <List key="articles" table="content c" selection="${articleSelection}" order = "c.webdb_create desc, c.date desc" limit="limit" extratables="${extratables}" />
+        </else>
+      </If>
+      <If condition="channeldescription==''">
+        <then>
+         <Define key="channeldescription" value="${channeltitle}"/>
+       </then>
+      </If>
+      <If condition="channelidentifier==''">
+        <then>
+          <Define key="channelidentifier" value="${config['Producer.PublicationHost']}/or/${channelfilename}"/>
+        </then>
+      </If>
+
+      <Generate
+         parameters="${encoding}"
+         generator="${generator}"
+        destination="${config.storageRoot}/${channelfilename}"/>
+    </definition>
+  </nodedefinition>
+
+  <nodedefinition name="RSSChannelBundle">
+    <parameters>
+      <string name="extratables" defaultvalue="none" />
+      <string name="selection" defaultvalue="c.is_published='1'" />  
+      <string name="basefilename" defaultvalue="main" />
+    </parameters>
+    <definition>
+      <!-- newswire -->
+      <RSSChannel
+        articleSelection="(c.to_article_type in (${articletype.newswire}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.newswire}))) and ${selection}"
+        channelfilename="${basefilename}-newswire.rss"
+        channeltitle="${config['Mir.Name']} ${basefilename} newswire"
+        limit="20"
+       extratables="${extratables}"
+      />
+      <RSSChannel
+        articleSelection="(c.to_article_type in (${articletype.newswire}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.newsire}))) and ${selection}"
+        channelfilename="${basefilename}-newswire-content.rss"
+        channeltitle="${config['Mir.Name']} ${basefilename} newswire"
+        limit="20"
+        generator="RSS-full.template"
+       extratables="${extratables}"
+      />    
+      <!-- features -->
+      <RSSChannel
+        articleSelection="(c.to_article_type in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}))) and ${selection}"
+        channelfilename="${basefilename}-features.rss"
+        channeltitle="${config['Mir.Name']} ${basefilename} features"
+        limit="20"
+       extratables="${extratables}"
+      />
+      <RSSChannel
+        articleSelection="(c.to_article_type in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}))) and ${selection}"
+        channelfilename="${basefilename}-features-content.rss"
+        channeltitle="${config['Mir.Name']} ${basefilename} features"
+        limit="20"
+        generator="RSS-full.template"
+       extratables="${extratables}"
+      />
+    </definition>
+  </nodedefinition>
+
+  <producer name="articles">
+    <verbs>
+      <verb name="changed" default="1">
+        <Define key="verbcondition" value="(not is_produced)"/>
+        <Set key="limit" value="10"/>
+      </verb>
+      <verb name="all">
+        <Define key="verbcondition" value=""/>
+        <Set key="limit" value="-1"/>
+      </verb>
+
+      <verb name="sample">
+        <Define key="verbcondition" value=""/>
+        <Set key="limit" value="10"/>
+      </verb>
+    </verbs>
+    <body>
+      <Enumerate key="article" table="content" selection="${verbcondition}"
+                  limit="limit" order="webdb_create desc">
+        <Enumerate 
+            key="media" table="image" 
+            selection="exists (select * from content_x_media where media_id=images.id and content_id=${article.id})
+               or      exists (select * from comment_x_media, comment
+                           where comment_id = comment.id and media_id=images.id and comment.to_media=${article.id})"
+            order="id desc">
+            
+           <GenerateMedia key="media" />
+        </Enumerate>
+        <Enumerate 
+            key="media" table="video" 
+            selection="exists (select * from content_x_media where media_id=video.id and content_id=${article.id})
+               or      exists (select * from comment_x_media, comment
+                           where comment_id = comment.id and media_id=video.id and comment.to_media=${article.id})"
+            order="id desc">
+           <GenerateMedia key="media" />
+        </Enumerate>
+        <Enumerate 
+            key="media" table="audio" 
+            selection="exists (select * from content_x_media where media_id=audio.id and content_id=${article.id})
+               or      exists (select * from comment_x_media, comment
+                                       where comment_id = comment.id and media_id=audio.id and comment.to_media=${article.id})"
+            order="id desc">
+            
+           <GenerateMedia key="media" />
+        </Enumerate>
+        <Enumerate 
+            key="media" table="otherMedia" 
+            selection="exists (select * from content_x_media where media_id=other_media.id and content_id=${article.id})
+               or      exists (select * from comment_x_media, comment
+                                       where comment_id = comment.id and media_id=other_media.id and comment.to_media=${article.id})"
+            order="id desc">
+            
+           <GenerateMedia key="media" />
+        </Enumerate>
+
+        <If condition="article.is_published == '1'">
+          <then>
+            <Language>
+              <Generate 
+                generator="/article.template" 
+                destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.shtml"/>
+             </Language>
+            <Generate 
+                generator="/languagebar.template" 
+                destination="${config.storageRoot}/languagebar/${article.to_original.date.formatted.yyyy}/${article.to_original.date.formatted.MM}/${article.to_original.id}.shtml"/>  
+             <IndexContent key="article" pathToIndex="${config['IndexPath']}"/>
+          </then>
+          <else>
+            <UnIndexContent key="article" pathToIndex="${config['IndexPath']}"/>
+          </else>
+        </If>
+        <MarkContent key="article"/>            
+      </Enumerate>
+    </body>
+  </producer>  
+
+  <producer name="staticpages">
+    <verbs>
+      <verb name="changed" default="1">
+        <Define key="verbcondition" value="(not is_produced)"/>
+        <Set key="limit" value="10"/>
+      </verb>
+      <verb name="all">
+        <Define key="verbcondition" value=""/>
+        <Set key="limit" value="-1"/>
+      </verb>
+    </verbs>
+
+    <body>
+      <Enumerate key="article" table="content" selection="${verbcondition}  and to_article_type = ${articletype.static}"
+                  limit="limit" order="webdb_create desc">
+        <Enumerate 
+            key="media" table="image" 
+            selection="exists (select * from content_x_media where media_id=images.id and content_id=${article.id})"
+            order="id desc">
+            
+           <GenerateMedia key="media" />
+        </Enumerate>
+        <Enumerate 
+            key="media" table="video" 
+            selection="exists (select * from content_x_media where media_id=video.id and content_id=${article.id})"
+            order="id desc">
+
+           <GenerateMedia key="media" />
+        </Enumerate>
+        <Enumerate 
+            key="media" table="audio" 
+            selection="exists (select * from content_x_media where media_id=audio.id and content_id=${article.id})"
+            order="id desc">
+            
+           <GenerateMedia key="media" />
+        </Enumerate>
+        <Enumerate 
+            key="media" table="otherMedia" 
+            selection="exists (select * from content_x_media where media_id=other_media.id and content_id=${article.id})"
+
+            order="id desc">
+            
+           <GenerateMedia key="media" />
+        </Enumerate>
+
+        <If condition="article.is_published == '1'">
+          <then>
+            <Language>
+              <Generate 
+                generator="/article.template" 
+                destination="${config.storageRoot}/${pathprefix}/static/${article.edittitle}.shtml"/>
+             </Language>
+            <Generate 
+                generator="/languagebar.template" 
+                destination="${config.storageRoot}/languagebar/${article.to_original.date.formatted.yyyy}/${article.to_original.date.formatted.MM}/${article.to_original.id}.shtml"/>  
+             <IndexContent key="article" pathToIndex="${config['IndexPath']}"/>
+          </then>
+          <else>
+            <UnIndexContent key="article" pathToIndex="${config['IndexPath']}"/>
+          </else>
+        </If>
+        <MarkContent key="article"/>            
+      </Enumerate>
+    </body>
+  </producer>
+
+  <producer name="navigation">
+    <verbs>
+      <verb name="generate" default="1" description="generates the left column"/>
+    </verbs>
+    <body>
+      <Language>
+        <Generate 
+            generator="/navigation.template" 
+            destination="${config.storageRoot}/${pathprefix}/navigation.inc"/>
+      </Language>
+    </body>
+  </producer>
+  
+  <producer name="staticimages">
+    <verbs>
+      <verb name="generate" default="1" description="copies all the static image files into place"/>
+    </verbs>
+    <body>
+      <CopyDir destination="img" source="etc/producer/images"/>
+    </body>
+  </producer>
+  
+  <producer name="newswirearchive">
+    <verbs>
+      <verb name="new">
+        <Set key="pages" value="3"/>
+      </verb>
+      <verb name="all">
+        <Set key="pages" value="-1"/>
+      </verb>
+    </verbs>
+    <body>
+        <Define key="docSuffix" value=".shtml"/>
+        <Define key="storageSuffix" value=".shtml"/>
+
+        <Batch key="articles" infokey="batch" table="content"
+               process="pages" batchsize="20" minbatchsize="10"
+               selection="is_published='1' and to_article_type = ${articletype.newswire}"
+               order="webdb_create asc">
+          <batches>
+            <Language>
+              <Define key="pagePrefix" value="${pathprefix}/newswire/archive"/>
+              <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
+              <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
+
+              <Generate
+                  generator="newswirearchive.template"
+                  destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
+
+            </Language>
+          </batches>
+          <batchlist>
+            <Language>
+              <Define key="pagePrefix" value="${pathprefix}/newswire/archive"/>
+              <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
+              <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
+              <Generate
+                  generator="batchnav.template"
+                  destination="${storagePrefix}nav${storageSuffix}"/>
+            </Language>
+          </batchlist>
+        </Batch>
+    </body>
+  </producer>
+
+  <producer name="featurearchive">
+    <verbs>
+      <verb name="new">
+        <Set key="pages" value="3"/>
+      </verb>
+      <verb name="all">
+        <Set key="pages" value="-1"/>
+      </verb> 
+    </verbs>
+    <body>
+        <Define key="docSuffix" value=".shtml"/>
+        <Define key="storageSuffix" value=".shtml"/>
+        
+        <Batch key="articles" infokey="batch" table="content" 
+               process="pages" batchsize="20" minbatchsize="10"
+               selection="is_published='1' and to_article_type in (${articletype.feature}, ${articletype.startspecial})"
+               order="webdb_create asc">
+          <batches>
+            <Language>
+              <Define key="pagePrefix" value="${pathprefix}/feature/archive"/>
+              <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
+              <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
+
+              <Generate 
+                  generator="featurearchive.template" 
+                  destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
+
+            </Language>
+          </batches>
+          <batchlist>
+            <Language>
+              <Define key="pagePrefix" value="${pathprefix}/feature/archive"/>
+              <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
+              <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
+              <Generate 
+                  generator="batchnav.template" 
+                  destination="${storagePrefix}nav${storageSuffix}"/>
+            </Language>
+          </batchlist>
+        </Batch>
+    </body>
+  </producer>
+
+  <producer name="topicpages">
+    <verbs>
+      <verb name="new">
+        <Set key="_topics" value="-1"/>
+        <Set key="pages" value="3"/>
+      </verb>
+      <verb name="all">
+        <Set key="_topics" value="-1"/>
+        <Set key="pages" value="-1"/>
+      </verb> 
+      <verb name="sample">
+        <Set key="_topics" value="2"/>
+        <Set key="pages" value="4"/>
+      </verb> 
+    </verbs>
+    <body>
+      <Enumerate key="topic" table="topic" limit="_topics">
+        <Define key="docSuffix" value=".shtml"/>
+        <Define key="storageSuffix" value=".shtml"/>
+        
+        <List key="special" table="content c" 
+          selection="c.is_published='1' and c.to_article_type = ${articletype.topicspecial} and c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
+          order = "webdb_create desc" limit="1"
+          extratables="content_x_topic cxt"/>
+      
+        <Batch key="articles" infokey="batch" table="content c" 
+               process="pages" batchsize="20" minbatchsize="10"
+               selection="c.is_published='1' and c.to_article_type in (${articletype.newswire}, ${articletype.feature}) and c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
+               order="webdb_create asc" extratables="content_x_topic cxt">
+          <batches>
+            <Language>
+              <Define key="pagePrefix" value="${pathprefix}/${topic.filename}/archive"/>
+              <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
+              <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
+
+              <Generate 
+                  generator="topicpage.template" 
+                  destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
+
+            </Language>
+          </batches>
+          <batchlist>
+            <Language>
+              <Define key="pagePrefix" value="${pathprefix}/${topic.filename}/archive"/>
+              <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
+              <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
+              <Generate 
+                  generator="batchnav.template" 
+                  destination="${storagePrefix}nav${storageSuffix}"/>
+            </Language>
+          </batchlist>
+        </Batch>
+      </Enumerate>
+    </body>
+  </producer>
+
+
+  <producer name="opnewswireinclude">
+    <verbs>
+      <verb name="generate" default="1" description="Generates the op newswire"/>
+    </verbs>
+<body>
+<Set key="whichnewswire" value="Open Publishing News" />
+      <List key="newswire" table="content" limit="30"
+        selection="is_published=true and to_article_type=${articletype.newswire}"
+        order="webdb_create desc"/>
+      <Language>
+        <Generate 
+            generator="/newswireinclude.template" 
+            destination="${config.storageRoot}/${pathprefix}/newswireinclude.shtml"/>
+      </Language>
+
+
+</body>
+</producer>
+
+  <producer name="rssnewswireinclude">
+    <verbs>
+      <verb name="generate" default="1" description="Generates the rss newswire"/>
+    </verbs>
+<body>
+<Set key="whichnewswire" value="RSS Publishing News" />
+      <List key="newswire" table="content" limit="30"
+        selection="is_published=true and to_article_type=${articletype.communityrssarticle}"
+        order="webdb_create desc"/>
+      <Language>
+        <Generate 
+            generator="/newswireinclude.template" 
+            destination="${config.storageRoot}/${pathprefix}/rssnewswireinclude.shtml"/>
+      </Language>
+
+
+</body>
+</producer>
+
+
+  
+  <producer name="startpage">
+    <verbs>
+      <verb name="generate" default="1" description="Generates the startpage"/>
+    </verbs>
+
+    <body>
+      <List key="startspecial" table="content" limit="2"
+        selection="is_published=true and to_article_type=${articletype.startspecial}"
+        order="webdb_create desc"/>
+                                        
+      <List key="features" table="content" limit="10" 
+        selection="is_published=true and to_article_type in (${articletype.feature},${articletype.promotedcommunityarticle},${articletype.promotednewswire})"
+        order="webdb_create desc"/>
+
+      <List key="communityrssarticles" table="content" limit="10" 
+        selection="is_published=true and to_article_type in (${articletype.communityrssarticle},${articletype.promotedcommunityarticle})"
+        order="webdb_create desc"/>
+
+      <List key="newswire" table="content" limit="30"
+        selection="is_published=true and to_article_type=${articletype.newswire}"
+        order="webdb_create desc"/>
+        
+      <List key="breakingnews" table="breakingNews" limit="10"
+         order="webdb_create desc"/>
+        
+      <Language>
+        <Generate 
+            generator="/startpage.template" 
+            destination="${config.storageRoot}/${pathprefix}/index.shtml"/>
+      </Language>
+    </body>
+  </producer>  
+  
+  <producer name="synchronization">
+    <verbs>
+      <verb name="run" default="1" description="Synchronizes the publication site with the production site"/>
+    </verbs>
+
+    <body>
+      <If condition="config['Rsync'] in ('1', 'y', 'yes', 'Y')">
+        <then>
+          <Execute command="${config['Rsync.Script.Path']}"/>
+        </then>
+      </If>
+    </body>
+  </producer>  
+  
+  
+  <producer name="media">
+    <verbs>
+      <verb name="new" default="1">
+        <Define key="verbcondition" value="(not is_produced)"/>
+        <Set key="limit" value="10"/>
+      </verb>
+      <verb name="all">
+        <Define key="verbcondition" value=""/>
+        <Set key="limit" value="-1"/>
+      </verb>
+
+      <verb name="sample">
+        <Define key="verbcondition" value=""/>
+        <Set key="limit" value="10"/>
+      </verb>
+    </verbs>
+    <body>
+      <Enumerate 
+          key="media" table="image" 
+          selection="${verbcondition}"
+          limit="limit" 
+          order="webdb_create desc">
+          
+         <GenerateMedia key="media" />
+      </Enumerate>
+      <Enumerate 
+          key="media" table="video" 
+          selection="${verbcondition}"
+          limit="limit" 
+          order="webdb_create desc">
+          
+         <GenerateMedia key="media" />
+      </Enumerate>
+      <Enumerate 
+          key="media" table="audio" 
+          selection="${verbcondition}"
+          limit="limit" 
+          order="webdb_create desc">
+          
+         <GenerateMedia key="media" />
+      </Enumerate>
+      <Enumerate 
+          key="media" table="otherMedia" 
+          selection="${verbcondition}"
+          limit="limit" 
+          order="webdb_create desc">
+          
+         <GenerateMedia key="media" />
+      </Enumerate>
+    </body>
+  </producer>  
+
+  <producer name="syndication">
+    <verbs>
+      <verb name="generate" />
+    </verbs>
+    <body>
+      <!-- the main features and newswire -->
+      <RSSChannelBundle />
+      
+      <!-- the topic features and newswires -->
+      <Enumerate key="topic" table="topic">
+        <RSSChannelBundle
+          basefilename="${topic.filename}"
+         selection="c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
+          extratables="content_x_topic cxt"
+        />
+      </Enumerate>
+      
+      
+
+    </body>
+
+  </producer>
+
+  <producer name="radicalendar">
+    <verbs>
+      <verb name="pull" />
+    </verbs>
+    <body>
+      <!-- groupname you will see as the value of "group" in the url for your radicalendar page, -->
+      <!--      gmtoffset is in minutes                                                                 -->
+      <Radicalendar key="calendar" groupname="_imc" gmtoffset="60"  />
+      <Generate 
+        generator="/radicalendar.template" 
+        destination="${config.storageRoot}/calendarinclude.shtml"/>
+
+
+    </body>
+  </producer>
+
+
+  <producer name="update">
+    <verbs>
+      <verb name="templates" description="updates templates and bundles">
+        <Define key="command" value="/usr/bin/rsync -rb --include=*/ --include=*.template  /var/lib/mir/nyc/mir/etc/ /var/lib/mir/nyc/mir/bin/mir/WEB-INF/etc/"/>
+      </verb>
+    </verbs>
+
+    <body>
+      <Execute command="${command}"/>
+    </body>
+  </producer>
+
+ <producer name="getlocalblogs">
+   <verbs>
+     <verb name="doit" />
+   </verbs>
+   <body>
+      <Enumerate key="article" table="content" selection="to_article_type in(${articletype.communityrssfeed}) and is_published=true"  order="webdb_create desc">
+        <Log message="Pulling 1.0 feed from ${article.title} at ${article.source}" type="info" />
+        <Pull
+          url="${article.source}"
+          articletype="${articletype.communityrssarticle}"
+          blogurl="${article.creator_main_url}"
+          blogname="${article.title}"
+        />
+      </Enumerate>
+    </body>
+  </producer>
+
+
+  
+</producers>
+
+
diff --git a/etc/producer/radicalendar.template b/etc/producer/radicalendar.template
new file mode 100755 (executable)
index 0000000..8d6ca17
--- /dev/null
@@ -0,0 +1,5 @@
+<ul class="radicalendar">
+  <list calendar as c>
+  <li>${c.eventdate} <a href="http://www.radicalendar.org/group/${c.shortname}/all/display/${c.objectid}/index.php?fulldate=${c.eventdate}">${c.title}</a>  ${c.eventtime} <br /> ${c.description}   
+  </list>
+</ul>
diff --git a/etc/producer/routines.template b/etc/producer/routines.template
new file mode 100755 (executable)
index 0000000..ce639bf
--- /dev/null
@@ -0,0 +1,107 @@
+<comment>
+  This file contains several routines to be used in the templates
+</comment>
+
+<function showArticleUrl(aPrefix, anArticle, aText, aCSSClass)>
+  <a class="${aCSSClass}" href="/${aPrefix}/${anArticle.date.formatted.yyyy}/${anArticle.date.formatted.MM}/${anArticle.id}.shtml">${aText}</a>
+</function>
+
+<function showSafeText(aText)>
+  ${utility.encodeHTML(aText)}
+</function>
+
+<function showSafeTextOrDefault(aField, aDefault)>
+  <if aField>
+    <call showSafeText(aField)>
+  <else>
+    ${aDefault}
+  </if>
+</function>
+
+<function showAddCommentLink(anArticle, aText, aLanguage)>
+  <a href="${config["Producer.OpenAction"]}?do=addcomment&aid=${anArticle.id}&language=${aLanguage.code}">${aText}</a>
+</function>
+                            
+<function showArticleMedia(anArticle)>
+ <!-- media -->
+   <list anArticle.to_media_audio as audio>
+      <br>
+      <br>
+      <a href="${audio["publish_server"]}${audio["publish_path"]}">
+          <img src="/images/${video["big_icon"]}" border="0" alt="">
+          <call showSafeText(audio.title)> - <call showSafeText(audio.descr)>
+      </a>
+   </list>
+
+   <list anArticle.to_media_video as video>
+      <br>
+      <br>
+      <a href="${video["publish_server"]}${video["publish_path"]}">
+          <img src="/images/${video["big_icon"]}" border="0" alt="">
+          <call showSafeText(video.title)> - <call showSafeText(video.descr)>
+      </a>
+   </list>
+
+   <list anArticle.to_media_other as other>
+      <br>
+      <br>
+      <a href="${other["publish_server"]}${other["publish_path"]}">
+          <img src="/images/${other["big_icon"]}" border="0" alt="">
+          <call showSafeText(other.title)> - <call showSafeText(other.descr)>
+      </a>
+   </list>
+
+   <list anArticle.to_media_images as image>
+      <br>
+      <br>
+      <img src="${image["publish_server"]}${image["publish_path"]}"
+              border="0" width="${image["img_width"]}"
+              height="${image["img_height"]}" alt="${image["title"]}"><br>
+      <i><call showSafeText(image.title)></i>
+   </list>
+ <!-- media -->
+</function>
+
+<function showArticleMediaIcons(anArticle)>
+    <if anArticle.to_media_audio > 
+      <img src="/img/${anArticle.to_media_audio[0]["big_icon"]}">
+    </if> 
+    
+    <if anArticle.to_media_video > 
+      <img src="/img/${anArticle.to_media_video[0]["big_icon"]}">
+    </if> 
+    
+    <if anArticle.to_media_other > 
+      <img src="/img/${anArticle.to_media_other[0]["big_icon"]}">
+    </if> 
+    
+      <if anArticle.to_media_images >
+        <img src="${anArticle.to_media_images[0]["icon_path"]}"
+          width="${anArticle.to_media_images[0]["icon_width"]}"
+          height="${anArticle.to_media_images[0]["icon_height"]}"
+          border=0 alt="${anArticle.to_media_images[0]["title"]}">
+      </if> 
+</function>
+
+<function showArticleAsFeature(anArticle)>
+  <h3><call showSafeText(anArticle.title)></h3>
+  <h4><i><call showSafeText(anArticle.creator)>, ${anArticle.creationdate.formatted["dd.MM.yyyy HH:mm"]}</i></h4>
+    <p>      
+        <call showArticleMediaIcons(anArticle)>
+        ${anArticle.description_parsed} 
+    </p>
+
+    <p align="right">
+      [<call showArticleUrl(pathprefix, anArticle, lang("general.readarticle"), "featurelink")>]
+    </p>
+</function>
+
+
+<function showArticleAsNewswire(anArticle)>
+  <img alt=${anArticle.to_media_icon["icon_alt"]} border="0" height="10"
+       src="${anArticle.to_media_icon["tiny_icon"]}" width="12"> 
+       
+  <call showArticleUrl(pathprefix, anArticle, anArticle.title, "")><br />
+  <font size="-2">${n.creationdate.formatted["dd-MM-yyyy HH:mm"]}</font><br>
+</function>
+
diff --git a/etc/producer/startpage.template b/etc/producer/startpage.template
new file mode 100755 (executable)
index 0000000..a326711
--- /dev/null
@@ -0,0 +1,548 @@
+<comment>
+  Template file for the front page.  
+  - all paths relative to /
+  - no complicated freemarker code
+</comment><!DOCTYPE HTML PUBLIC 
+   "-//W3C//DTD HTML 4.01 Transitional//EN" 
+   "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=${config["Mir.DefaultHTMLCharset"]}"> 
+  <title>${config["Mir.Name"]}</title>
+  <meta name="keywords" content="indymedia,imc">
+  <meta name="description" content="indymedia,imc">
+<!--   <meta http-equiv="expires" content="599"> -->
+  <meta http-equiv="pragma" content="no-cache">
+  <link rel="stylesheet" type="text/css" href="http://sarai.indymedia.org/~patrick/mir.nyc/css/main.css" />
+</head>
+           
+<body>
+
+<div class="subsiteLinks">
+<table cellspacing="0" cellpadding="0" border="0">
+   <tr>
+      <td class="subsites">
+         <ul>
+               <li><a href="/audio/">Audio</a></li>
+               <li><a href="/photo/">Photo</a></li>
+               <li><a href="/print/">Print</a></li>
+               <li><a href="/video/">Video</a></li>
+               <li><a href="/">Web</a></li>
+         </ul>
+      </td>
+      <td class="i18n" nowrap="nowrap">
+         <a href="/en/">English</a>&nbsp;|
+         <a href="/es/">Espa&ntilde;ol</a>
+      </td>
+   </tr>
+</table>
+</div>
+<div class="subsiteLinks" style="background-color: #fff">
+<table id="boroughs" cellspacing="0" cellpadding="0" border="0">
+   <tr>
+      <td class="subsites">
+         <ul>
+               <li><a href="/print/">City &#38; Staten</a></li>
+               <li><a href="/audio/">Brooklyn</a></li>
+               <li><a href="/video/">Bronx</a></li>
+               <li><a href="/photo/">Queens</a></li>
+         </ul>
+      </td>
+      <td style="text-align: right;">
+         <a href="#" style="padding-right: 0px;">Text version</a>
+      </td>
+   </tr>
+</table>
+</div>
+
+<table class="logo" cellspacing="0" cellpadding="0" border="0">
+   <tr>
+      <td class="placeHolder">
+this is a draft<br />
+         <h3>
+            New York City Indymedia
+         </h3>
+<div style="font-size: 95%; font-variant: small-caps; letter-spacing: 3px;">A free network of <a href="http://www.cat.org.au/maffew/cat/openpub.html">Open Publishing</a></div>
+      </td>
+   </tr>
+</table>
+
+<table class="main" cellspacing="0" cellpadding="0" border="0">
+   <tr valign="top">
+      <td class="margin"><div>&#160;</div></td>
+      <td class="leftColumn"><!-- 
+      begin left column
+      --><ul class="leftNav">
+       <li><a href="#">Newswire</a> 
+            <ul>
+               <li><a href="#">By Category</a></li>
+               <li><a href="#">Local Newswire</a></li>
+               <li><a href="#">Global Newswire</a></li>
+               <li><a href="#">Advanced Search</a></li>
+            </ul>
+         </li>
+       <li><a href="#">Open Publishing</a>
+            <ul>
+               <li><a href="#">publish your news</a></li>
+               <li><a href="#">Editorial guidelines</a></li>
+               <li><a href="#">Open Publishing Guide</a></li>
+               </ul>
+         </li>
+       <li><a href="#">Indymedia NYC</a>
+            <ul>
+               <li><a href="#">Contact Us</a></li>
+               <li><a href="#">Get Involved</a></li>
+               <li><a href="#">Working Groups</a></li>
+               </ul>
+         </li>
+       <li><a href="#">Indymedia Network</a>
+            <ul>
+               <li><a href="#">about indymedia</a></li>
+               <li><a href="#">Frequent questions</a></li>
+               <li><a href="#">how to get involved</a></li>
+               </ul>
+         </li>
+      </ul>
+      <div class="cities">
+         <p class="title">
+            Global Network
+         </p>
+         <p>
+            <a href="http://www.indymedia.org/">www.indymedia.org</a>
+         </p>
+         <p class="title">
+            Africa
+         </p>
+         <p>
+            <a href="http://nigeria.indymedia.org/">nigeria</a><br />
+            <a href="http://southafrica.indymedia.org/">south africa</a>
+         </p>         
+         <p class="title">
+            Europe
+         </p>
+         <p>
+            <a href="http://athens.indymedia.org/">athens</a><br />
+            <a href="http://austria.indymedia.org/">austria</a><br />
+            <a href="http://barcelona.indymedia.org/">barcelona</a><br />
+            <a href="http://belgium.indymedia.org/">belgium</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>
+         <p class="title">
+            Canada
+         </p>
+         <p>
+            <a href="http://alberta.indymedia.org/">alberta</a><br />
+            <a href="http://hamilton.indymedia.org/">hamilton</a><br />
+            <a href="http://maritimes.indymedia.org/">maritimes</a><br />
+            <a href="http://montreal.indymedia.org/">montreal</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>         
+         <p class="title">
+            Latin America
+         </p>
+         <p>
+            <a href="http://argentina.indymedia.org/">argentina</a><br />
+            <a href="http://bolivia.indymedia.org/">bolivia</a><br />
+            <a href="http://brasil.indymedia.org/">brasil</a><br />
+            <a href="http://chiapas.indymedia.org/">chiapas</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>         
+         <p class="title">
+            Pacific
+         </p>
+         <p>
+            <a href="http://adelaide.indymedia.org/">adelaide</a><br />
+            <a href="http://www.indymedia.org.nz/">aotearoa</a><br />
+            <a href="http://brisbane.indymedia.org/">brisbane</a><br />
+            <a href="http://jakarta.indymedia.org/">jakarta</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>         
+         <p class="title">
+            South Asia
+         </p>
+         <p>
+            <a href="http://india.indymedia.org/">india</a><br />
+            <a href="http://mumbai.indymedia.org/">mumbai</a>
+         </p>         
+         <p class="title">
+            United States
+         </p>
+         <p>
+            <a href="http://arizona.indymedia.org/">arizona</a><br />
+            <a href="http://atlanta.indymedia.org/">atlanta</a><br />
+            <a href="http://austin.indymedia.org/">austin</a><br />
+            <a href="http://baltimore.indymedia.org/">baltimore</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>         
+         <p class="title">
+            West Asia
+         </p>
+         <p>
+            <a href="http://indymedia.org.il/">israel</a><br />
+            <a href="http://jerusalem.indymedia.org/">palestine</a>
+         </p>         
+         <p class="title">
+            Process
+         </p>
+         <p>
+            <a href="http://global.indymedia.org/">discussion</a><br />
+            <a href="http://www.indymedia.org/fbi/">fbi/legal updates</a><br />
+            <a href="http://process.indymedia.org/faq.php3">indymedia faq</a><br />
+            <a href="http://lists.indymedia.org/">mailing lists</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>         
+         <p class="title">
+            Projects
+         </p>
+         <p>
+            <a href="http://climate.indymedia.org/">climate</a><br />
+            <a href="http://print.indymedia.org/">print</a><br />
+            <a href="http://radio.indymedia.org/">radio</a><br />
+            <a href="http://satellite.indymedia.org/">satellite tv</a><br />
+            <a href="#" class="citiesMore">more...</a>
+         </p>
+         <div class="credits">      
+            <p class="title">
+               Credits
+            </p>
+            <p>
+               <a href="http://mir.indymedia.org/">mir.indymedia.org</a><br />
+               <a href="#">imc tech</a><br />
+               <a href="https://barcelona.indymedia.org/nyc/servlet/Mir">admin</a>
+            </p>         
+         </div>
+      </div><!-- 
+      end left column
+      --></td>
+      <td class="margin"><div>&#160;</div></td>
+      <td class="centerColumn"><!-- 
+      begin center column
+      --><div class="centerColumn">
+      <table cellspacing="0" cellpadding="0" border="0">
+         <tr valign="top">
+            <td>
+               <comment>
+               begin breaking news
+               </comment>
+               <if breakingnews && breakingnews[0].text!=".">
+                  <p class="breakingNews">
+                     <b class="title">${lang("startpage.breakingnews")}</b>
+                     <assign stop="0">
+                     <list breakingnews as bn>
+                       <if bn.text=="."><assign stop="1"></if>
+                       <if stop=="0">
+                           ${bn.creationdate.formatted["dd-MM-yyyy HH:mm"]}:
+                           ${bn.text}
+                       </if>
+                     </list>
+                  </p>
+               </if>
+               <comment>
+               end breaking news
+               begin features
+               </comment>
+               <list features as f>
+                  <assign forig=f.to_original>
+                     <if languagepreference>
+                        <assign i=f.to_translation(languagepreference)>
+                     <else>
+                        <assign i=f>
+                     </if>
+                     <div class="items">
+                        <ul>
+                           <li>
+                              <a href="${config["Producer.DocRoot"]}/${language.code}/${i.date.formatted["yyyy'/'MM"]}/${i.id}.shtml" class="headline">${i.title}</a>
+                              <ul>
+                                 <li>
+                                    ${i.description_parsed}
+                                    <small>
+                                    <a href="${config["Producer.DocRoot"]}/${language.code}/${i.date.formatted["yyyy'/'MM"]}/${i.id}.shtml" class="headlineLink">FULL&#160;STORY<!-- ${lang("general.readmore")} --></a>&#160; 
+                  <a style="text-deocration: none;">20&#160;Comments</a><br />
+                                    ${lang("general.authoredby")} ${forig.creator}<br /></small>
+                                 </li>
+                              </ul>
+                           </li> 
+                        </ul>
+               </list>
+               <comment>
+               end features
+               </comment>
+               <small class="publish">
+                  <a href="#">More</a>&#160;|
+                  <a href="#">Publish News</a>
+               </small>
+               <div class="topics">
+ed. note: most discussed stories
+                  <table class="topicTeaser" cellspacing="0" cellpadding="0" border="0">
+                     <tr>
+                        <td class="icon">
+                           <a href="#"><img src="http://sarai.indymedia.org/~patrick/mir.nyc/img/zapatista.02.gif" border="0" /></a>
+                        </td>
+                        <td class="link">
+                     <a href="#" class="teaserLink">zapatista</a> 
+                     <a href="#">Israel Defense Forces Committing Massacre in Rafah...</a>&#160; <small>
+                     <a style="text-deocration: none; font-size: 110%;">80&#160;Comments</a><br /></small>
+                        </td>
+                     </tr>
+                  </table>
+                  <table class="topicTeaser" cellspacing="0" cellpadding="0" border="0">
+                     <tr>
+                        <td class="icon">
+                           <a href="#"><img src="http://sarai.indymedia.org/~patrick/mir.nyc/img/palestine.01.gif" border="0" /></a>
+                        </td>
+                        <td class="link">
+                           <a href="#" class="teaserLink">palestine</a>
+                           <a href="#">Bay Area Defends Local Family Facing Deportation...</a>&#160; <small>
+                           <a style="text-deocration: none; font-size: 110%;">65&#160;Comments</a><br /></small>
+                        </td>
+                     </tr>
+                  </table>
+                  <table class="topicTeaser" cellspacing="0" cellpadding="0" border="0">
+                     <tr>
+                        <td class="icon">
+                           <a href="#"><img src="http://sarai.indymedia.org/~patrick/mir.nyc/img/class_war.02.gif" border="0" /></a>
+                        </td>
+                        <td class="link">
+                           <a href="#" class="teaserLink">class</a> 
+                           <a href="#">Heated Sidewalks Melt Madison Ave; Mott Haven Freezes</a>&#160; <small>
+                           <a style="text-deocration: none; font-size: 110%;">32&#160;Comments</a><br /></small>
+                        </td>
+                     </tr>
+                  </table>
+                  <small class="publish">
+                     <a href="#">more</a>&#160;|
+                     <a href="#">publish news</a>
+                  </small>
+`                      </div>
+            </div><!-- 
+            end center column
+            --></td>
+            <td class="margin" id="centerLeft"><div>&#160;</div></td>
+            <td class="centerRightColumn"><!-- 
+            begin center right column
+            --><div class="centerRightColumn">
+               <a href="#"><img src="http://sarai.indymedia.org/~patrick/mir.nyc/img/penny_drive.jpg" width="200" height="300" class="headlineImage" alt="" border="0" /></a>
+               <p class="caption">
+                  <small>This is a picture of a black child. However, as predominantly white activist-led 
+                  organization, we will exercise caution to not appropriate people of color imagery.</small>
+               </p>
+               <list startspecial as ss>
+                  <assign sorig=ss.to_original>
+                     <if languagepreference>
+                        <assign s=ss.to_translation(languagepreference)>
+                     <else>
+                        <assign s=ss>
+                     </if>
+                     <p class="subFeatures">
+                        <b><a href="${config["Producer.DocRoot"]}/${language.code}/${s.date.formatted["yyyy'/'MM"]}/${s.id}.shtml">${s.title}</a></b>
+                        <p>
+                           ${s.description_parsed}
+                           <small><a href="${config["Producer.DocRoot"]}/${language.code}/${s.date.formatted["yyyy'/'MM"]}/${s.id}.shtml" class="headlineLink">FULL&#160;STORY</a></small>
+                        </p>
+                     </p>
+               </list>
+               <a href="#"><img src="http://sarai.indymedia.org/~patrick/mir.nyc/img/truth_tape.jpg" class="headlineImage" style="margin: 15px 0px 0px 0px;" width="200" height="60" alt="" border="0" /></a>
+               <p>
+                  <small>Obligatory protestor, before lunch at Angelicas.</small>
+               </p>
+            </td>
+         </tr>
+      </table>
+
+      <table class="newswireCategories" cellspacing="0" cellpadding="0" border="0">
+         <tr valign="top">
+            <td class="first">
+               <b>Local</b>
+               <ul>
+                  <li><a href="#">Mass Action and Autonomous Action in the Election Year: An analysis of the successes</a></li> 
+                  <li><a href="#">The NYC District Attorney Makes the Campaign Against Critical Mass Personal</a></li> 
+                  <li><a href="#">Recycle This! to Host Electronics Recycling Day in Brooklyn, April 3</a></li> 
+                  <li><a href="#">The Real Face of Occupation Plays at Vox Pop</a></li> 
+               </ul>
+               <small class="publish">
+                  <a href="#">more</a>&#160;|
+                  <a href="#">publish news</a>
+               </small>
+
+            </td>
+            <td>
+               <b>Events</b>
+      <table class="events" cellspacing="0" cellpadding="0" border="0">
+         <tr valign="top">
+            <td colspan="2">
+               <a href="#" class="nav">Today's Events</a>
+               <small class="date">Mar 26 '05</small>
+            </td>
+         </tr>
+         <tr valign="top">
+            <th>12pm</th>
+            <td>
+               <div>
+                  <a href="#">Action on 42nd ST</a>, <a href="#">Action on 34th ST</a>
+               </div>
+            </td>
+         </tr>
+         <tr valign="top">
+            <th>4pm</th>
+            <td>
+               <div>
+                  <a href="#">noRNC Meeting</a>, <a href="#">NoOneIsIllegal Meeting</a>, 
+                  <a href="#">Party Fundraiser</a>, <a href="#">Some Other Meeting</a>, 
+                  <a href="#">Really Really Long Sentence Really Really Long Sentence</a>
+               </div>
+            </td>
+         </tr>
+         <tr valign="top">
+            <th>7pm</th>
+            <td>
+               <div>
+                  <a href="#">XYZ Meeting</a>, <a href="#">Movie: ABC...</a>
+               </div>
+            </td>
+         </tr>
+      </table>
+            </td>
+         </tr>
+         <tr valign="top">
+            <td class="first">
+               <b>Global</b>
+               <ul>
+                  <li><a href="#">Register NOW! 2nd Annual NYC Grassroots Media Conference April 9-10, 2005</a></li> 
+                  <li><a href="#">Over 75 Reports of Protests on M 19</a></li> 
+                  <li><a href="#">Local Composers’ “Concert for Peace” Part of a Global Grassroots Collaboration</a></li> 
+                  <li><a href="#">FAIR/CounterSpin's Clear Channel Radio Link</a></li> 
+               </ul>
+               <small class="publish">
+                  <a href="#">more</a>&#160;|
+                  <a href="#">publish news</a>
+               </small>
+            </td>
+            <td>
+               <b>Analysis</b>
+               <ul>
+                  <li><a href="#">The Face of Protest is A Changin'</a></li> 
+                  <li><a href="#">Local Organization Launches Financial Justice Blog</a></li> 
+                  <li><a href="#">Saving Schiavo While Burying the Real News</a></li> 
+                  <li><a href="#">HANDS OFF JUANITA YOUNG - DROP THE CHARGES NOW!</a></li> 
+               </ul>
+               <small class="publish">
+                  <a href="#">more</a>&#160;|
+                  <a href="#">publish news</a>
+               </small>
+            </td>
+         </tr>
+         <tr valign="top">
+            <td class="first">
+               <b>Local</b>
+               <ul>
+                  <li><a href="#">Photos of Marchers on 125th St and on Malclom X Blvd.</a></li> 
+                  <li><a href="#">Where to Find The Indypendent</a></li> 
+                  <li><a href="#">Photos Of Speakers And The People In Harlem Protesting Against The War</a></li> 
+                  <li><a href="#">Demo in New Paltz riles young republicans</a></li> 
+               </ul>
+               <small class="publish">
+                  <a href="#">more</a>&#160;|
+                  <a href="#">publish news</a>
+               </small>
+            </td>
+            <td>
+               <b>Who Knows</b>
+               <ul>
+                  <li><a href="#">The Face of Protest is A Changin'</a></li> 
+                  <li><a href="#">Local Organization Launches Financial Justice Blog</a></li> 
+                  <li><a href="#">Images: Artists for Peace Concert</a></li> 
+                  <li><a href="#">NJ Anti-Capitalist Anti-Authoritarian Gathering</a></li> 
+               </ul>
+               <small class="publish">
+                  <a href="#">more</a>&#160;|
+                  <a href="#">publish news</a>
+               </small>
+            </td>
+         </tr>
+      </table>
+      </div><!-- 
+      end center column
+      --></td>
+      <td class="margin" id="centerRight"><div>&#160;</div></td>
+      <td class="rightColumn"><!-- 
+      begin right column
+      --><div class="rightColumn">
+   
+
+<div class="openPublishing">
+   <div class="wrap">
+      <p class="title">
+         <b><a href="#">Publish Your News</a></b>
+      </p>
+      <p>
+         Upload <!-- your news &#8211;  -->articles, audio, video,  and photos.<!-- &#160; <i>BE THE MEDIA</i> -->
+     <!--  <small class="publish"><a href="#">Click here to publish</a></small> -->
+</p>
+<p style="text-align: center;">
+How to <a href="#">Open Publish</a>
+</p>
+   </div>
+
+
+<form class="publish" id="" name="" action="">
+   <input type="submit" class="submit" id="" style="width: 100%;" name="" value="publish your news" tabindex="1" />
+</form>
+
+</div>
+
+         <div class="newswireSort" style="margin: 0px 0px 15px 0px;">
+            <b><a href="#">Newswire</a></b><br />
+            <a href="/${language.code}/" style="text-transform: lowercase;">Local</a>&#160;|
+            <a href="#" style="text-transform: lowercase;">Global</a>&#160;|
+            <a href="?category" style="text-transform: lowercase;">Category</a><br />
+            <!-- #if expr="\"$DOCUMENT_URI\" = /?category/" 
+            --><!-- #include virtual="/${language.code}/languagebar.shtml"
+            --><!-- #else
+            --><!-- #include virtual="/${language.code}/newswireinclude.shtml"
+            --><!-- #endif
+            --><small class="publish" style="text-align: left; diplay: block; margin: 3px 0px 0px 0px;">
+               <a href="#" style="text-decoration: underline;">publish news</a>
+            </small>
+         </div>
+         <!-- <iframe name="shazbot" id="shazbot" src="/${language.code}/newswireinclude.shtml" frameborder="0" style="overflow: hidden;"></iframe> -->
+         <ul class="newswire">
+            <list newswire as nn>
+               <assign norig=nn.to_original>
+               <if languagepreference>
+                  <assign n=nn.to_translation(languagepreference)>
+               <else>
+                  <assign n=nn>
+               </if>
+               <if n.to_original.to_article_type==articletype.newswire>
+                  <li>
+                     <a href="${config["Producer.DocRoot"]}/${language.code}/${n.date.formatted.yyyy}/${n.date.formatted.MM}/${n.id}.shtml">${n.title}</a>
+                  </li>
+               <else>
+                  <li>
+                     <a href="${n.source}">${n.title}</a>
+                  </li>
+               </if>
+            </list>
+         </ul>
+
+         <small class="publish" style="text-align: left; margin: 15px 0px 0px 0px;"><a href="#">publish news</a></small>
+      </div><!-- 
+      end right column
+      --></td>
+      <td class="margin"><div>&#160;</div></td>
+   </tr>
+</table>
+<div class="copyleft">
+   <small>
+      <a href="#">copyLeft</a>&#160;|
+      <a href="javascript:var e1='%6e%79c%2e&#105;n%64&#121;%6de&#100;&#105;%61&#046;o%72&#103;',e2='&#109;&#097;&#105;&#108;&#116;&#111;&#058;%20', e3='&#105;%6e%66%6f';var e0=e2+e3+'@'+e1;(window.location?window.location.replace(e0):document.write(e0));">&#105;&#110;&#102;&#111;&#064;&#110;&#121;&#099;&#046;&#105;&#110;&#100;&#121;&#109;&#101;&#100;&#105;&#097;&#046;&#111;&#114;&#103;</a><br />
+      34 E. 29th ST, 2nd FL, NY, NY 10016<br />
+      (212) 684-8112<br /> 
+sll content <a href="#">copyleft</a> unless otherwise stated <a href="#">not responsible</a> for content...
+   </small>
+</div>
+
+</body>
+</html>
+
+
diff --git a/etc/producer/staticpage.template b/etc/producer/staticpage.template
new file mode 100755 (executable)
index 0000000..640dfe5
--- /dev/null
@@ -0,0 +1,185 @@
+<comment>
+  Template file for an article.
+</comment>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=${config["Mir.DefaultHTMLCharset"]}">
+    <title>${config["Mir.Name"]} | ${article.title}</title>
+  <meta name="keywords" content="indymedia,imc">
+  <meta name="description" content="indymedia,imc">
+  <meta http-equiv="expires" content="599">
+  <meta http-equiv="pragma" content="no-cache">
+  <if article.mediacount!=0>
+    <if article.to_media_images>
+      <meta name="keywords" content="images"></meta>
+    </if>
+    <if article.to_media_audio>
+      <meta name="keywords" content="audio"></meta>
+    </if>
+    <if article.to_media_video>
+      <meta name="keywords" content="video"></meta>
+    </if>
+    <if article.to_media_other>
+      <meta name="keywords" content="other"></meta>
+    </if>
+  </if>
+  <style type="text/css">
+    body, h1, h2, h3, h4, h5, h6, p, li, dt, dd, div, td, blockquote, div, span
+            {font-family:'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;}
+    a       {text-decoration:none;}
+    #searchfield  {font-size: 12px; width:113px; height:16px;  background-color:#aaaaaa;}
+    #searchselect {font-size: 12px; width:120px; height:22px;  background-color:#aaaaaa;}
+    #searchbutton   {font-size: 12px; width:120px; height:20px; background-color:#aaaaaa; text-align: right;}
+  </style>
+   <script language="javascript">
+  function addToNewsletter(id){
+    var previousValue=getCookie("myNewsletter");
+    document.cookie="myNewsletter="+previousValue+","+id + ";path=/";
+    alert("Added article id to cookie!");
+  }
+
+  function clearNewsletter(){
+                document.cookie="myNewsletter= ;path=/";
+                alert("newsletter erased!");
+        }
+
+  function getNewsletter(){
+    var cookieValue=getCookie("myNewsletter");
+    if (document.images)
+        location.replace('${config["Producer.OpenAction"]}?do=getpdf&id='+cookieValue+'&forIE=.pdf');
+    else
+        location.href = '${config["Producer.OpenAction"]}?do=getpdf&id='+cookieValue+'&forIE=.pdf';
+  }
+
+  function getCookie(name){
+
+          var cookies = document.cookie;
+
+          if (cookies.indexOf(name) != -1){
+                  var startpos = cookies.indexOf(name)+name.length+1;
+                  var endpos = cookies.indexOf(";",startpos)-1;
+                  if (endpos == -2) endpos = cookies.length;
+                  return unescape(cookies.substring(startpos,endpos));
+          }
+          else{
+                  return false; // the cookie couldn't be found! it was never set before, or it expired.
+          }
+  }
+
+   </script>
+
+</head>
+
+<body bgcolor="#dddddd" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" link="#003399" alink="#cc0033" vlink="#660033" >
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+  <tr>
+    <td valign="top">
+      <table cellpadding="0" cellspacing="0" border="0" width="100%" bgcolor="#cc0033">
+        <tr>
+          <td><a href="../../"><img src="../../../img/logo.gif" alt="((i))" width="120" height="120" border="0"></a>
+
+                 </td>
+        </tr>
+               <tr>
+                       <td  bgcolor="#CC6666">
+                       <a href="../../">&nbsp;<font size="-1" color="#DDDDDD"><b>${lang("general.start")}</b></font></a>
+                       </td>
+               </tr>
+      </table>
+
+      <br>
+
+      <!--#include virtual="../../navigation.inc" -->
+
+      <table cellpadding="6" cellspacing="0" border="0" width="100%"><tr><td>
+      </td></tr></table>
+    </td>
+    <td valign="top" width="100%">
+      <table cellpadding="4" cellspacing="0" border="0" width="100%" bgcolor="#cc0033"><tr><td>
+        <font color="#dddddd" size="-1"><b>
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/mission.shtml"><font color="#dddddd">${lang("general.menu.missionStatement")}&nbsp;&gt;&gt;</font></a> &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/moderation.shtml"><font color="#dddddd">${lang("general.menu.moderation")}&nbsp;&gt;&gt;</font></a>  &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/support.shtml"><font color="#dddddd">${lang("general.menu.support")}&nbsp;&gt;&gt;</font></a>  &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/mailinglists.shtml"><font color="#dddddd">${lang("general.menu.mailinglists")}&nbsp;&gt;&gt;</font></a> &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/participate.shtml"><font color="#dddddd">${lang("general.menu.participate")}&nbsp;&gt;&gt;</font></a>
+        </b></font>
+      </td></tr></table>
+      <table cellpadding="30" cellspacing="0" border="0" width="80%"><tr><td>
+        <table border="0" cellpadding="2" cellspacing="0" width="100%"><tr><td bgcolor="#669999">
+          &nbsp;<!--#include virtual="/languagebar/${article.to_original.date.formatted.yyyy}/${article.to_original.date.formatted.MM}/${article.to_original.id}.shtml"-->
+        </td></tr></table> 
+       <br>
+        <table border="0" cellpadding="2" cellspacing="0" width="100%"><tr><td bgcolor="#669999">
+         &nbsp;<a href="${config.openAction}?do=opensession&sessiontype=translation&to_content=${article.to_original.id}"><font color="#dddddd">${lang("general.addtranslation")} &gt;&gt;</font></a>
+        </td></tr></table>
+
+        <br>
+        <h2>${article.title}</h2>
+
+        <p><i><font size="-1">${article.to_original.creator} <if article.to_original.id!=article.id>(${lang("general.translatedby", article.creator)})</if><if article.creator || article.to_original.creator>, </if>${article.to_original.creationdate.formatted["dd.MM.yyyy HH:mm"]}</font></i></p>
+        <br>
+        <p>${article.description_parsed}</p>
+
+        <if article.to_original.mediacount!=0>
+          <!-- media -->
+          <list article.to_original.to_media_audio as media>
+          <p>
+                 <img src="../../../img/${media["big_icon"]}" border="0" alt="">&nbsp;
+                 <a href="${media["publish_server"]}${media["publish_path"]}">
+          ${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}
+          </a>
+          </p>
+          </list>
+
+         <list article.to_original.to_media_video as media>
+          <p>
+          <img src="../../../img/${media["big_icon"]}" border="0" alt="">
+          <a href="${media["publish_server"]}${media["publish_path"]}">
+          ${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}</a>
+          </p>
+          </list>
+
+         <list article.to_original.to_media_other as media>
+          <p>
+          <img src="../../../img/${media["big_icon"]}" border="0" alt="">
+          <a href="${media["publish_server"]}${media["publish_path"]}">
+          ${media["title"]} - ${media["media_descr"]} ${media["human_readable_size"]}</a>
+          </p>
+          </list>
+
+          <list article.to_original.to_media_images as image>
+          <p>
+          <img src="${image["publish_server"]}${image["publish_path"]}"
+          border="0" width="${image["img_width"]}"
+          height="${image["img_height"]}" alt="${image["title"]}">
+          <br><i>${image["title"]}</i>
+          </p>
+          </list>
+               </if>
+
+          <br>
+          <p><font size="-1">${article.content_data_parsed}</font></p>
+          <br>
+          <if article.creator_main_url || article.creator_email>
+            <p>
+            <font size="-1">
+            <if article.creator_email>
+              <img src="../../../img/mail_small.gif" width="12" height="10" border="0" alt="-"> ${lang("article.email.prefix")}: <a href="mailto:${article.creator_email}">${article.creator_email}</a><br>
+            </if>
+            <if article.creator_main_url>
+              <img src="../../../img/link_small.gif" width="12" height="10" border="0" alt=""> ${lang("article.homepage.prefix")}: <a href="${article.creator_main_url}" target="extern">${article.creator_main_url}</a><br>
+            </if>
+            </font>
+            </p>
+          </if>
+    </td>
+  </tr>
+</table>
+</body>
+</html>
+
+
+
+
diff --git a/etc/producer/topicpage.template b/etc/producer/topicpage.template
new file mode 100755 (executable)
index 0000000..d30b89f
--- /dev/null
@@ -0,0 +1,217 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=${config["Mir.DefaultHTMLCharset"]}">
+    <title>${config["Mir.Name"]} | ${topic.title}</title>
+  <meta name="keywords" content="${lang("general.keywords")}">
+  <meta name="description" content="${topic.description}">
+  <meta name="dc:title" content="${topic.title}">
+  <meta name="dc:creator" content="">
+  <meta name="dc:subject" content="${topic.title}">
+  <meta name="dc:description" content="${topic.title}">
+  <meta name="dc:publisher" content="">
+  <meta name="dc:date" content="${config.now.formatted.dc}">
+  <meta name="dc:language" content="${language.code}">
+  <meta name="dc:coverage" content="">
+  <meta name="dc:rights" content="">
+  <meta http-equiv="expires" content="599">
+  <meta http-equiv="pragma" content="no-cache">
+  <style type="text/css">
+    body, h1, h2, h3, h4, h5, h6, p, li, dt, dd, div, td, blockquote, div, span
+                   {font-family:'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;}
+    a              {text-decoration:none;}
+    #searchfield   {font-size: 12px; width:113px; height:16px;  background-color:#aaaaaa;}
+    #searchselect  {font-size: 12px; width:120px; height:22px;  background-color:#aaaaaa;}
+    #searchbutton  {font-size: 12px; width:120px; height:20px; background-color:#aaaaaa; text-align: right;}
+  </style>
+</head>
+
+<body bgcolor="#dddddd" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" link="#003399" alink="#cc0033" vlink="#660033" >
+
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+  <tr>
+    <td valign="top">
+      <table cellpadding="0" cellspacing="0" border="0" width="100%" bgcolor="#cc0033">
+        <tr>
+          <td><a href="${config["Producer.DocRoot"]}/${language.code}/"><img src="${config["Producer.DocRoot"]}/img/logo.gif" width="120" height="120" alt="((i))" border="0"></a></td>
+        </tr>
+      </table>
+      <table cellpadding="4" cellspacing="0" border="0" width="100%" bgcolor="#cc0033">
+        <tr>
+          <td><a href="${config["Producer.DocRoot"]}/${language.code}/">&nbsp;<font color="#dddddd" size="-1"><b>${lang("general.start")}</b></font></a></td>
+        </tr>
+      </table>
+      <br>
+      <!--#include virtual="../navigation.inc" -->
+    </td>
+    <td valign="top" width="100%">
+      <table cellpadding="4" cellspacing="0" border="0" width="100%" bgcolor="#cc0033">
+        <tr>
+          <td>
+            &nbsp;&nbsp;
+            <font color="#dddddd" size="-1"><b>
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/mission.shtml"><font color="#dddddd">${lang("general.menu.missionStatement")}&nbsp;&gt;&gt;</font></a> &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/moderation.shtml"><font color="#dddddd">${lang("general.menu.moderation")}&nbsp;&gt;&gt;</font></a>  &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/support.shtml"><font color="#dddddd">${lang("general.menu.support")}&nbsp;&gt;&gt;</font></a>  &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/mailinglists.shtml"><font color="#dddddd">${lang("general.menu.mailinglists")}&nbsp;&gt;&gt;</font></a> &nbsp;
+          <a href="${config["Producer.DocRoot"]}/${language.code}/static/participate.shtml"><font color="#dddddd">${lang("general.menu.participate")}&nbsp;&gt;&gt;</font></a>
+            </b></font>
+          </td>
+        </tr>
+      </table>
+      <table cellpadding="0" cellspacing="0" border="0" width="100%">
+        <tr>
+          <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+          <td width="100%">
+            <br>
+            <br>
+            <font color="#cc0033" size="+2"><b>${topic.title}</b></font>
+            <br>
+            <br>
+          </td>
+          <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+          <td valign="top">&nbsp;
+          </td>
+          <td>
+          &nbsp;&nbsp;&nbsp;&nbsp;
+          </td>
+        </tr>
+        <tr>
+          <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+          <td>
+            <br>
+              <!--- topic-special ---> <comment></comment>
+                               <if (batch.current.index==batch.first.index)>
+                               <list special as ss>
+                                 <assign sorig=ss.to_original> 
+                                 <if languagepreference>
+                                   <assign s=ss.to_translation(languagepreference)>
+                                 <else>
+                                   <assign s=ss>
+                                 </if>
+
+                   <table width="100%" border="0" cellspacing="0" cellpadding="10" bgcolor="#eeeeee"><tr><td>
+                       <p><font size="+2">
+                       <a href="${config["Producer.DocRoot"]}/${language.code}/${s.date.formatted["yyyy'/'MM"]}/${s.id}.shtml"><b>${s.title}</b></a>
+                       </font><br>
+                          <font size="-2">${sorig.creator} <if sorig.id!=s.id>(${lang("general.translatedby", s.creator)})</if><if s.creator || sorig.creator>, </if> ${sorig.creationdate.formatted["dd-MM-yyyy - HH:mm"]}</font></p>
+                       <p><font size="-1">
+                        <if sorig.to_media_audio >
+                          <img align="left" vspace="4" hspace="8"
+                            src="${config["Producer.DocRoot"]}/img/${sorig.to_media_audio[0]["big_icon"]}">
+                        </if>
+                        <if sorig.to_media_video >
+                          <img align="left" vspace="4" hspace="8"
+                            src="${config["Producer.DocRoot"]}/img/${sorig.to_media_video[0]["big_icon"]}">
+                        </if>
+                        <if sorig.to_media_other >
+                          <img align="left" vspace="4" hspace="8"
+                             src="${config["Producer.DocRoot"]}/img/${sorig.to_media_other[0]["big_icon"]}">
+                        </if>
+                        <if sorig.to_media_images >
+                          <img align="left" vspace="4" hspace="8"
+                            src="${sorig.to_media_images[0]["icon_path"]}"
+                            width="${sorig.to_media_images[0]["icon_width"]}"
+                            height="${sorig.to_media_images[0]["icon_height"]}"
+                            border=0 alt="${sorig.to_media_images[0]["title"]}">
+                        </if>
+                        ${s.description_parsed}
+                    <br clear="all">
+                    <a href="${config["Producer.DocRoot"]}/${language.code}${s.publish_path}${s.id}.shtml"><b>${lang("general.readmore")} &gt;&gt;</b></a>
+                    </font></p>
+
+                   </td></tr></table>
+                </list>
+                               </if>
+              <!--- /topic-special --->
+
+              <!--- articles ---> <comment></comment>
+                <list articles as a>
+                 <assign aorig=a.to_original>
+               <if languagepreference>
+                 <assign i=a.to_translation(languagepreference)>
+               <else>
+                 <assign i=a>
+               </if>
+
+                  <p><font size="+1">
+                  <a href="${config["Producer.DocRoot"]}/${language.code}/${i.date.formatted["yyyy'/'MM"]}/${i.id}.shtml"><b>${i.title}</b></a>
+                  </font><br>
+                     <font size="-2">${aorig.creator} <if aorig.id!=i.id>(${lang("general.translatedby", i.creator)})</if><if i.creator || aorig.creator>, </if> ${aorig.creationdate.formatted["dd-MM-yyyy - HH:mm"]}</font></p>
+                  <p><font size="-1">
+                  <if aorig.to_media_audio >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${config["Producer.DocRoot"]}/img/${aorig.to_media_audio[0]["big_icon"]}">
+                  </if>
+                  <if aorig.to_media_video >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${config["Producer.DocRoot"]}/img/${aorig.to_media_video[0]["big_icon"]}">
+                  </if>
+                  <if aorig.to_media_other >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${config["Producer.DocRoot"]}/img/${aorig.to_media_other[0]["big_icon"]}">
+                  </if>
+                  <if aorig.to_media_images >
+                  <img align="left" vspace="4" hspace="8"
+                       src="${aorig.to_media_images[0]["icon_path"]}"
+                       width="${aorig.to_media_images[0]["icon_width"]}"
+                       height="${aorig.to_media_images[0]["icon_height"]}"
+                       border=0 alt="${aorig.to_media_images[0]["title"]}">
+                  </if>
+                  ${i.description_parsed}
+                  <br clear="all">
+                  <a href="${config["Producer.DocRoot"]}/${language.code}${i.publish_path}${i.id}.shtml"><b>${lang("general.readmore")} &gt;&gt;</b></a>
+                  </font></p>
+
+                  <br>
+                </list>
+              <!--- /articles --->
+
+
+          </td>
+          <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+          <td valign="top">
+                       &nbsp;
+          </td>
+          <td>
+          &nbsp;&nbsp;&nbsp;&nbsp;
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+
+<!-- the rest -->
+  <tr>
+  <td>&nbsp;</td>
+  <table width="100%">
+                       <!--- Page Navigation --->
+               <tr><td colspan="4" bgcolor="#CCCCCC"><br></td></tr>
+               <tr>
+                       <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+                       <td align="left" valign="top">
+                         <if batch.current.index!=batch.first.index>
+                <a href="${docPrefix}${batch.previous.identifier}${docSuffix}"><font><b>&lt;&lt; ${lang("general.page.prefix")} ${batch.previous.index}</b></font></a>
+              </if>
+              <if batch.current.index!=batch.first.index && batch.current.index!=batch.last.index>
+                |
+              </if>
+              <if batch.next>
+                <a href="${docPrefix}${batch.next.identifier}${docSuffix}"><font><b>${lang("general.page.prefix")} ${batch.next.index} &gt;&gt;</b></font></a>
+              </if>
+                       </td>
+                       <td>
+                       &nbsp;
+                       </td>
+                       <td align="right" valign="top">
+                       <!--#include virtual="${docPrefix}nav${docSuffix}" -->
+                       </td>
+                       <td>&nbsp;<br><br><br></td>
+               </tr>
+  </table>
+
+
+  </tr>
+</table>
+</body>
+</html>
diff --git a/etc/scripts/bundletool.sh b/etc/scripts/bundletool.sh
new file mode 100755 (executable)
index 0000000..88b0d51
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+HOME=`dirname $0`
+
+for j in $HOME/../../bin/mir/WEB-INF/lib/*.jar; do
+  if [ "$CLASSPATH" ] ; then
+    CLASSPATH="$CLASSPATH:$j"
+  else
+    CLASSPATH="$j"
+  fi
+done
+export CLASSPATH
+
+if [ "$JAVA_HOME" ] ; then
+  if [ -z "$JAVACMD" ]; then
+    JAVACMD="$JAVA_HOME/bin/java"
+  fi
+fi
+
+$JAVACMD tool.BundleTool  $*
diff --git a/etc/scripts/produce.sh b/etc/scripts/produce.sh
new file mode 100755 (executable)
index 0000000..535c289
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo -e "http://your.mir.home/yourmirwebapp/servlet/Mir?login=youruser&password=yourpassword&module=Producer&do=produce&producer=$1&verb=$2\n-accept_all_cookies\n-dump" | lynx -
diff --git a/etc/scripts/reload.sh b/etc/scripts/reload.sh
new file mode 100755 (executable)
index 0000000..2737590
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo -e "http://your.mir.home/yourmirwebapp/servlet/Mir?login=youruser&password=yourpassword&module=Admin&do=reload\n-accept_all_cookies \n-dump" | lynx -