From: Penny Leach Date: Mon, 29 Jan 2007 05:27:49 +0000 (+1300) Subject: adding freetag plugin X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=refs%2Fheads%2Fjoh-1.0;p=s9y.git adding freetag plugin --- diff --git a/plugins/serendipity_event_freetag/ChangeLog b/plugins/serendipity_event_freetag/ChangeLog new file mode 100644 index 0000000..33ae742 --- /dev/null +++ b/plugins/serendipity_event_freetag/ChangeLog @@ -0,0 +1,22 @@ +2.70: +----- + * Added possiblity for "automatted tags". These will indicate what tags to assign to an entry + when keywords are found in an entry + +2.64: +----- + * Added option to convert categories to tags + +2.48: +----- + * Config option for lowercasing, patch by Lars Strojny + +2.47: +---- + * Better show metastuff + +2.44: +---- + * Show related Entries, patch by stain + * Make configurable where to show tags + diff --git a/plugins/serendipity_event_freetag/README b/plugins/serendipity_event_freetag/README new file mode 100644 index 0000000..38adced --- /dev/null +++ b/plugins/serendipity_event_freetag/README @@ -0,0 +1,38 @@ +Using this subquery you can convert existing categories to tags: + +INSERT INTO serendipity_entrytags (entryid, tag) + SELECT serendipity_entries.id, serendipity_category.category_name + FROM serendipity_entries, serendipity_category, serendipity_entrycat + WHERE serendipity_entrycat.entryid = serendipity_entries.id + AND serendipity_category.categoryid = serendipity_entrycat.categoryid; + +[quoted from: http://pixelated-dreams.com/archives/229-Spring-Cleaning.html] + +Or using this script you can convert existing categories to tags: + +\n", + htmlspecialchars($row['category_name']), + (int)$row['id'], + htmlspecialchars($row['title']) + ); +} \ No newline at end of file diff --git a/plugins/serendipity_event_freetag/UTF-8/CVS/Entries b/plugins/serendipity_event_freetag/UTF-8/CVS/Entries new file mode 100644 index 0000000..0907e75 --- /dev/null +++ b/plugins/serendipity_event_freetag/UTF-8/CVS/Entries @@ -0,0 +1,7 @@ +/lang_it.inc.php/1.1/Wed Apr 19 09:33:20 2006// +/lang_pl.inc.php/1.1/Mon Jul 17 08:22:23 2006// +/lang_ja.inc.php/1.4/Fri Aug 18 07:31:17 2006// +/lang_nl.inc.php/1.2/Thu Nov 2 10:18:09 2006// +/lang_de.inc.php/1.8/Sun Nov 19 08:31:30 2006// +/lang_fr.inc.php/1.1/Sat Dec 30 11:02:21 2006// +D diff --git a/plugins/serendipity_event_freetag/UTF-8/CVS/Repository b/plugins/serendipity_event_freetag/UTF-8/CVS/Repository new file mode 100644 index 0000000..1ad4ba2 --- /dev/null +++ b/plugins/serendipity_event_freetag/UTF-8/CVS/Repository @@ -0,0 +1 @@ +additional_plugins/serendipity_event_freetag/UTF-8 diff --git a/plugins/serendipity_event_freetag/UTF-8/CVS/Root b/plugins/serendipity_event_freetag/UTF-8/CVS/Root new file mode 100644 index 0000000..d3135e5 --- /dev/null +++ b/plugins/serendipity_event_freetag/UTF-8/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@php-blog.cvs.sourceforge.net:/cvsroot/php-blog diff --git a/plugins/serendipity_event_freetag/UTF-8/lang_de.inc.php b/plugins/serendipity_event_freetag/UTF-8/lang_de.inc.php new file mode 100644 index 0000000..88897c9 --- /dev/null +++ b/plugins/serendipity_event_freetag/UTF-8/lang_de.inc.php @@ -0,0 +1,66 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Freie Artikel-Tags'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Erlaubt das freie Tagging von Artikeln'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Bitte alle zutreffenden Tags angeben. Mehrere zutreffende Tags mit Komma (,) trennen'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Tags für diesen Artikel: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Artikel mit Tag %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Verwandte Tags zu Tag %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','Keine verwandten Tags gefunden.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'Alle festgelegten Tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Tags verwalten'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Alle Tags verwalten'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', '\'Verwaiste\' Tags verwalten'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'Einträge ohne Tags anzeigen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'Einträge mit \'verwaisten\' Tags anzeigen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'Keine Einträge ohne Tags gefunden!'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Häufigkeit'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Funktionen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Umbenennen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Aufteilen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Löschen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'Tag %s wirklich löschen?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'Tags mit einem Komma trennen:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Zeige Wolke mit verwandten Tags an?'); + +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Getaggte Artikel'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Zeigt alle vorhandenen Tags'); +@define('PLUGIN_FREETAG_NEWLINE', 'Zeilenumbruch nach jedem Tag?'); +@define('PLUGIN_FREETAG_XML', 'XML-Icons anzeigen?'); +@define('PLUGIN_FREETAG_SCALE', 'Schriftgröße des Font-Tags je nach Popularität vergrößern (wie Technorati, flickr)?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','Aktualisiere %d Tags zu Eintrag %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'Wieviele Tags sollen angezeigt werden?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Wie oft muß ein Tag vorkommen, damit er angezeigt wird?'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Minimale Schriftgröße eines Tags in der Wolke in %'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Maximale Schriftgröße eines Tags in der Wolke in %'); +@define('PLUGIN_FREETAG_META_KEYWORDS', 'Anzahl der Stichwörter, die in die Meta-Angaben des HTML-Codes eingesetzt werden sollen (0: abgeschaltet)'); +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Artikel mit ähnlichen Themen:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Zeige Artikel mit ähnlichen Themen an?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','Wieviele Artikel mit ähnlichen Themen sollen angezeigt werden?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER', 'Zeige die Tags in der Fußzeile an?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC', 'Falls eingeschaltet, werden die Tags in der Fußzeile des Eintrags angezeigt. Wenn abgeschaltet, werden die Tags innerhalb des Textkörpers/erweiterten Teils des Artikels angezeigt.'); +@define('PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS', 'Tags in Kleinbuchstaben umwandeln'); +@define('PLUGIN_EVENT_FREETAG_RELATED_TAGS', 'Verwandte Tags'); + +@define('PLUGIN_EVENT_FREETAG_CAT2TAG', 'Erstelle Tags für zugewiesene Kategorien?'); +@define('PLUGIN_EVENT_FREETAG_CAT2TAG_DESC', 'Falls aktiviert werden alle Kategorien eines Eintrags als Tags zugewiesen. Alle bestehende Kategoriezuweisungen können über die Tag-Verwaltung in Tags konvertiert werden.'); +@define('PLUGIN_EVENT_FREETAG_GLOBALLINKS', 'Alle zugewiesenen Kategorien bestehender Artikel zu Tags konvertieren'); +@define('PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG_ENTRY', 'Kategorien von Artikel #%d (%s) konvertiert zu: %s.'); +@define('PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG', 'Alle Kategorien wurden zu Tags konvertiert.'); + +@define('PLUGIN_EVENT_FREETAG_KEYWORDS', 'Automatische Schlüsselwörter'); +@define('PLUGIN_EVENT_FREETAG_KEYWORDS_DESC', 'Sie können Schlüsselwörter (mit "," getrennt) für jedes Tag zuweisen. Immer wenn eines dieser Schlüsselwörter im Text gefunden wird, wird der zugehörige Tag automatisch dem Eintrag zugewiesen. Achten Sie darauf dass sehr viele automatische Schlüsselwörter beim Speichern eines Artikels längere Zeit beanspruchen können.'); +@define('PLUGIN_EVENT_FREETAG_KEYWORDS_ADD', 'Schlüsselwort %s gefunden, Tag %s automatisch zugewiesen.
'); diff --git a/plugins/serendipity_event_freetag/UTF-8/lang_fr.inc.php b/plugins/serendipity_event_freetag/UTF-8/lang_fr.inc.php new file mode 100644 index 0000000..e81ecb3 --- /dev/null +++ b/plugins/serendipity_event_freetag/UTF-8/lang_fr.inc.php @@ -0,0 +1,53 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Marquage des entrées'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Autorise le marquage libre des billets'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Entrez tous les tags s\'appliquant. Séparer les tags multiples par des virgules (,)'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Tags pour ce billet: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Billets marqués comme %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Tags se rapportant au tag %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','Pas de tags en rapport.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'Tous les tags définis'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Gérer les tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Gérer tous les tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', 'Gérer les tags \'orphelins\''); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'Lister les billets non marqués'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'Lister les billets marqués \'orphelins\''); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'Aucune entrée non marquée'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Poids'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Action'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Renommer'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Séparer'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Effacer'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'voulez-vous vraiment effacer le tag %s ?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'Utilisez la virgule pour séparer les tags :'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Afficher le nuage de tags pour les tags en rapport ?'); +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Billets ayant les mêmes tags :'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Afficher les billets ayant les même tags ?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','Combien de billets doivent être affichés ?'); + +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Nuage de tags'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Montre une liste des tags existant pour les billets'); +@define('PLUGIN_FREETAG_NEWLINE', 'Retour à la ligne après chaque tag ?'); +@define('PLUGIN_FREETAG_XML', 'Afficher les icones XML ?'); +@define('PLUGIN_FREETAG_SCALE','Ajuster la taille du tag par rapport à sa fréquence (comme sur Technorati, flickr) ?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','Mise à jour des tags %d pour le billet numéro: %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'Combien de tags doivent être affichés ?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Combien de fois un tag doit-il être présent pour apparaître ?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Taille de police minimale (%) d\'un tag dans le nuage'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Taille de police maximale (%) d\'un tag dans le nuage'); +?> diff --git a/plugins/serendipity_event_freetag/UTF-8/lang_it.inc.php b/plugins/serendipity_event_freetag/UTF-8/lang_it.inc.php new file mode 100644 index 0000000..3140fba --- /dev/null +++ b/plugins/serendipity_event_freetag/UTF-8/lang_it.inc.php @@ -0,0 +1,53 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Freetag'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Consente il libero tagging dei post'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Inserisci i tag. I tag diversi vanno separati con la virgola (,)'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Tags: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Post con tag %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Tag simili a %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','Non ci sono tag associati.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'Tutti i tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Gestione tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Gestione di tutti i tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', 'Gestione dei tag \'foglie\''); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'Lista dei post senza tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'Lista dei post con tag \'foglie\''); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'Non ci sono post senza !'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Peso'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Azione'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Rinomina'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Splitta'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Cancella'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'Vuoi veramente cancellare il tag %s?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'Usa la virgola per separare i tag:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Visualizza la nuvola dei tag correlati ai post?'); +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Post simili:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Visualizzare post simili?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','Quanti post simili devono essere visualizzati?'); + +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Tags'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Mostra i tag associati ai post'); +@define('PLUGIN_FREETAG_NEWLINE', 'Fineriga dopo ogni tag?'); +@define('PLUGIN_FREETAG_XML', 'Visualizza le icone XML?'); +@define('PLUGIN_FREETAG_SCALE','Scala la dimensione dei font in base alla popolaritˆ (come Technorati, Flickr)?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','Salvando i tag %d per il post %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'Quanti tag devono essere visualizzati?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Quante occorrenze deve avere un tag per essere visibile?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Misura minima del font % di un tag nella nuvola'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Misura massima del font % di un tag nella nuvola'); +?> diff --git a/plugins/serendipity_event_freetag/UTF-8/lang_ja.inc.php b/plugins/serendipity_event_freetag/UTF-8/lang_ja.inc.php new file mode 100644 index 0000000..719837e --- /dev/null +++ b/plugins/serendipity_event_freetag/UTF-8/lang_ja.inc.php @@ -0,0 +1,61 @@ + + * EN-Revision: 1.11 + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'エントリのタグ'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'エントリの自由なタグを許可します。'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'いくつかのタグをエントリに適用します。カンマ(「,」)で複数のタグを分割します。'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'このエントリに定義されたタグ: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', '「%s」としてタグ付けされたエントリ'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'タグ「%s」に関連したタグ'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','関連したタグはありません。'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'すべての定義済みタグ'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'タグを管理する'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'すべてのタグを管理する'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', '「空」のタグを管理する'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'タグがないエントリの一覧'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', '「空」タグのエントリの一覧'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'エントリはタグがありません!'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'タグ'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', '重み'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', '操作'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', '名称変更'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', '分割'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', '削除'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'タグ「%s」を本当に削除しますか?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'カンマで区切ったタグを使用する:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', '関連タグへのタグクラウドを表示しますか?'); +@define('PLUGIN_EVENT_FREETAG_SEND_HTTP_HEADER', 'X-FreeTag-HTTP-Headers を送信する'); +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'エントリタグの表示'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'エントリの既存タグの一覧を表示します。'); +@define('PLUGIN_FREETAG_NEWLINE', '各タグの後に改行を入れますか?'); +@define('PLUGIN_FREETAG_XML', 'XML アイコンを表示しますか?'); +@define('PLUGIN_FREETAG_SCALE','(Technorati、flickr のように)タグのフォントサイズを人気度に依存して変化させますか?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','エントリ番号の %d 個のタグをアップグレード中: %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'いくつのタグを表示するべきですか?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'How many occurences must a tag have in order to be shown?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'タグクラウドの最小フォントサイズ(単位:パーセント)'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'タグクラウドの最大フォントサイズ(単位:パーセント)'); + +@define('PLUGIN_FREETAG_META_KEYWORDS', 'Number of meta keywords to embed in HTML source (0: disabled)'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'タグに関連するエントリ一覧:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Display related entries by tags?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','How many related entries should be dislayed?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER', 'フッターでタグを表示しますか?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC', 'If enabled, the tags will be shown in the footer of an entry. If disabled, the tags will be put inside the body/extended part of your entries.'); +@define('PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS', 'Lowercase tags'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_TAGS', '関連タグ'); +@define('PLUGIN_EVENT_FREETAG_TAGLINK', 'Taglink'); diff --git a/plugins/serendipity_event_freetag/UTF-8/lang_nl.inc.php b/plugins/serendipity_event_freetag/UTF-8/lang_nl.inc.php new file mode 100644 index 0000000..6ff2c85 --- /dev/null +++ b/plugins/serendipity_event_freetag/UTF-8/lang_nl.inc.php @@ -0,0 +1,61 @@ + + * NL-Revision: Revision of lang_nl.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Taggen van bijdragen'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Maakt het mogelijk om bijdragen van tags te voorzien'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Vul relevante tags in, meerdere tags kunnen met een komma worden gescheiden (,)'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Tags voor deze bijdrage: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Bijdragen met tag %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Tags gerelateerd aan tag %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','Geen gerelateerde tags.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'Alle tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Beheer tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Beheer alle tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', 'Beheer \'leaf\' tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'Laat niet-getagde bijdragen zien'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'Laat \'leaf\' getagde bijdragen zien'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'Geen niet-getagde bijdragen!'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Gewicht'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Actie'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Hernoem'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Splits'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Verwijder'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'Weet je zeker dat je de %s tag wil verwijderen?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'gebruik een komma om tags te scheiden:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Toon tag cloud met gerelateerde tags?'); +@define('PLUGIN_EVENT_FREETAG_SEND_HTTP_HEADER', 'Stuur X-FreeTag-HTTP-Headers?'); +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Toon getagde bijdragen'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Toon een "tag cloud" van gebruikte tags'); +@define('PLUGIN_FREETAG_NEWLINE', 'Linefeed na elke tag?'); +@define('PLUGIN_FREETAG_XML', 'Toon XML-icoon?'); +@define('PLUGIN_FREETAG_SCALE','Lettergrootte obv populariteit (zoals Technorati, flickr)?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','Bijwerken van %d tags voor bijdrage: %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'Hoeveel tags maximaal tonen?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Hoevaak moet een tag gebruikt zijn om getoond te worden?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Minimaal font percentage van tag in tag cloud?'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Maximaal font percentage van tag in tag cloud?'); + +@define('PLUGIN_FREETAG_META_KEYWORDS', 'Hoeveel meta keywords in HTML source invoegen? (0: uitgeschakeld)'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Gerelateerde bijdragen op basis van tags:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Toon gerelateerde bijdragen obv tags?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','Hoeveel gerelateerde bijdragen tonen?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER', 'Tags in footer weergeven?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC', 'Wanneer aktief, worden de tags in de footer van een bijdrage weergegeven. Wanneer niet aktief, worden de tags in de verkorte/uitgebreide bijdrage geplaatst.'); +@define('PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS', 'Tags altijd in kleine letters?'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_TAGS', 'Gerelateerde tags'); +@define('PLUGIN_EVENT_FREETAG_TAGLINK', 'Taglink:'); diff --git a/plugins/serendipity_event_freetag/UTF-8/lang_pl.inc.php b/plugins/serendipity_event_freetag/UTF-8/lang_pl.inc.php new file mode 100644 index 0000000..1461bd4 --- /dev/null +++ b/plugins/serendipity_event_freetag/UTF-8/lang_pl.inc.php @@ -0,0 +1,59 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Tagowanie wpisów'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Umożliwia dowolne tagowanie wpisów'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Wprowadź dowolne pasujące tagi. Rozdzielaj tagi przecinkami (,).'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Tagi dla tego wpisu: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Wpisy otagowane jako %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Tagi powiązane z tagiem %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED', 'Brak powiązanych tagów.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'Wszystkie zdefiniowane tagi'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Zarządzaj tagami'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Zarządzaj wszystkimi tagami'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', 'Zarządzaj tagami \'Leaf\' (pojedynczymi)'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'Lista nieotagowanych wpisów'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'Lista wpisów z tagami \'Leaf\''); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'Nie ma nieotagowanych wpisów!'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Waga'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Akcja'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Zmień nazwę'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Rozdziel'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Usuń'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'Na pewno chcesz usunąć tag %s?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'użyj przecinka by rozdzielić tagi:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Pokazać tag cloud (chmurę tagów) do powiązanych wpisów?'); + +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Tagi'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Pokazuje listę tagów zdefiniowanych dla wpisów'); +@define('PLUGIN_FREETAG_NEWLINE', 'Przejście do nowej linii po każdym tagu?'); +@define('PLUGIN_FREETAG_XML', 'Pokazywać ikony XML?'); +@define('PLUGIN_FREETAG_SCALE', 'Skalować rozmiar czcionki w zależności od popularności taga (jak w serwisach Technorati czy flickr)?'); +@define('PLUGIN_FREETAG_UPGRADE1_2', 'Poprawiono %d tagów dla wpisu numer: %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'Jak wiele tagów ma być pokazywanych?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Jak wiele razy musi wystąpić dany tag, by był pokazywany na liście?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Minimalny rozmiar czcionki w procentach (%) w chmurze tagów (tag cloud)'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Maksymalny rozmiar czcionki w procentach (%) w chmurze tagów (tag cloud)'); + +@define('PLUGIN_FREETAG_META_KEYWORDS', 'Ilość słów kluczowych meta umieszczanych w źródle HTML (0: wyłączenie opcji)'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Powiązane wpisy wedlug tagów:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED', 'Wyświetlać wpisy powiązane według tagów?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT', 'Jak wiele powiązanych wpisów ma być pokazywanych?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER', 'Pokazywać tagi w stopce wpisu?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC', 'Jeśli opcja jest włączona, tagi będą pokazywane w stopce wpisu. Jeśli opcja będzie wyłączona, tagi zostaną umieszczone w treści (na samym dole) wpisu lub rozszerzonej treści wpisu.'); +@define('PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS', 'Pokaż tagi tylko małymi literami'); + diff --git a/plugins/serendipity_event_freetag/lang_de.inc.php b/plugins/serendipity_event_freetag/lang_de.inc.php new file mode 100644 index 0000000..c8dda5e --- /dev/null +++ b/plugins/serendipity_event_freetag/lang_de.inc.php @@ -0,0 +1,68 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Freie Artikel-Tags'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Erlaubt das freie Tagging von Artikeln'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Bitte alle zutreffenden Tags angeben. Mehrere zutreffende Tags mit Komma (,) trennen'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Tags für diesen Artikel: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Artikel mit Tag %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Verwandte Tags zu Tag %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','Keine verwandten Tags gefunden.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'Alle festgelegten Tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Tags verwalten'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Alle Tags verwalten'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', '\'Verwaiste\' Tags verwalten'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'Einträge ohne Tags anzeigen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'Einträge mit \'verwaisten\' Tags anzeigen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'Keine Einträge ohne Tags gefunden!'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Häufigkeit'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Funktionen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Umbenennen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Aufteilen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Löschen'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'Tag %s wirklich löschen?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'Tags mit einem Komma trennen:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Zeige Wolke mit verwandten Tags an?'); +@define('PLUGIN_EVENT_FREETAG_SEND_HTTP_HEADER', 'Sende X-FreeTag-HTTP-Header'); + +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Getaggte Artikel'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Zeigt alle vorhandenen Tags'); +@define('PLUGIN_FREETAG_NEWLINE', 'Zeilenumbruch nach jedem Tag?'); +@define('PLUGIN_FREETAG_XML', 'XML-Icons anzeigen?'); +@define('PLUGIN_FREETAG_SCALE', 'Schriftgröße des Font-Tags je nach Popularität vergrößern (wie Technorati, flickr)?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','Aktualisiere %d Tags zu Eintrag %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'Wieviele Tags sollen angezeigt werden?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Wie oft muß ein Tag vorkommen, damit er angezeigt wird?'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Minimale Schriftgröße eines Tags in der Wolke in %'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Maximale Schriftgröße eines Tags in der Wolke in %'); +@define('PLUGIN_FREETAG_META_KEYWORDS', 'Anzahl der Stichwörter, die in die Meta-Angaben des HTML-Codes eingesetzt werden sollen (0: abgeschaltet)'); +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Artikel mit ähnlichen Themen:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Zeige Artikel mit ähnlichen Themen an?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','Wieviele Artikel mit ähnlichen Themen sollen angezeigt werden?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER', 'Zeige die Tags in der Fußzeile an?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC', 'Falls eingeschaltet, werden die Tags in der Fußzeile des Eintrags angezeigt. Wenn abgeschaltet, werden die Tags innerhalb des Textkörpers/erweiterten Teils des Artikels angezeigt.'); +@define('PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS', 'Tags in Kleinbuchstaben umwandeln'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_TAGS', 'Verwandte Tags'); + +@define('PLUGIN_EVENT_FREETAG_CAT2TAG', 'Erstelle Tags für zugewiesene Kategorien?'); +@define('PLUGIN_EVENT_FREETAG_CAT2TAG_DESC', 'Falls aktiviert werden alle Kategorien eines Eintrags als Tags zugewiesen. Alle bestehende Kategoriezuweisungen können über die Tag-Verwaltung in Tags konvertiert werden.'); +@define('PLUGIN_EVENT_FREETAG_GLOBALLINKS', 'Alle zugewiesenen Kategorien bestehender Artikel zu Tags konvertieren'); +@define('PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG_ENTRY', 'Kategorien von Artikel #%d (%s) konvertiert zu: %s.'); +@define('PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG', 'Alle Kategorien wurden zu Tags konvertiert.'); + +@define('PLUGIN_EVENT_FREETAG_KEYWORDS', 'Automatische Schlüsselwörter'); +@define('PLUGIN_EVENT_FREETAG_KEYWORDS_DESC', 'Sie können Schlüsselwörter (mit "," getrennt) für jedes Tag zuweisen. Immer wenn eines dieser Schlüsselwörter im Text gefunden wird, wird der zugehörige Tag automatisch dem Eintrag zugewiesen. Achten Sie darauf dass sehr viele automatische Schlüsselwörter beim Speichern eines Artikels längere Zeit beanspruchen können.'); +@define('PLUGIN_EVENT_FREETAG_KEYWORDS_ADD', 'Schlüsselwort %s gefunden, Tag %s automatisch zugewiesen.
'); diff --git a/plugins/serendipity_event_freetag/lang_en.inc.php b/plugins/serendipity_event_freetag/lang_en.inc.php new file mode 100644 index 0000000..6492da4 --- /dev/null +++ b/plugins/serendipity_event_freetag/lang_en.inc.php @@ -0,0 +1,76 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Tagging of entries'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Allows freestyle tagging of entries'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Enter any tags that apply. Seperate multiple tags with a comma (,)'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Defined tags for this entry: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Entries tagged as %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Tags related to tag %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','No related tags.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'All defined Tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Manage Tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Manage All Tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', 'Manage \'Leaf\' Tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'List Untagged Entries'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'List \'Leaf\' Tagged Entries'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'No Untagged entries!'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Weight'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Action'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Rename'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Split'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Delete'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'Do you really want to delete the %s tag?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'use a comma to seperate tags:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Show tag cloud to related tags?'); +@define('PLUGIN_EVENT_FREETAG_SEND_HTTP_HEADER', 'Send X-FreeTag-HTTP-Headers'); +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Show tagged entries'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Shows a list of existing tags for entries'); +@define('PLUGIN_FREETAG_NEWLINE', 'Linefeed after each Tag?'); +@define('PLUGIN_FREETAG_XML', 'Show XML-icons?'); +@define('PLUGIN_FREETAG_SCALE','Scale tag font size depending on popularity (like Technorati, flickr)?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','Upgrading %d tags for entry number: %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'How many tags should be shown?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'How many occurences must a tag have in order to be shown?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Minimum font size % of tag in tag cloud'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Maximum font size % of tag in tag cloud'); + +@define('PLUGIN_FREETAG_META_KEYWORDS', 'Number of meta keywords to embed in HTML source (0: disabled)'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Related entries by tags:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Display related entries by tags?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','How many related entries should be dislayed?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER', 'Show tags in footer?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC', 'If enabled, the tags will be shown in the footer of an entry. If disabled, the tags will be put inside the body/extended part of your entries.'); +@define('PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS', 'Lowercase tags'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_TAGS', 'Related tags'); +@define('PLUGIN_EVENT_FREETAG_TAGLINK', 'Taglink'); +@define('PLUGIN_EVENT_FREETAG_CAT2TAG', 'Create tags for all associated categories?'); +@define('PLUGIN_EVENT_FREETAG_CAT2TAG_DESC', 'If enabled, all categories that an entry is assigned to will be added as tags to your entry. You can set all category associations of all your existing entries within the "Manage Tags" menu of your Administration Suite.'); +@define('PLUGIN_EVENT_FREETAG_GLOBALLINKS', 'Convert all assigned categories of existing entries to tags'); +@define('PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG_ENTRY', 'Converted categories of entry #%d (%s): %s.'); +@define('PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG', 'All categories converted to tags.'); + +@define('PLUGIN_EVENT_FREETAG_KEYWORDS', 'Automatted keywords'); +@define('PLUGIN_EVENT_FREETAG_KEYWORDS_DESC', 'You can assign keywords (separated by ",") for each tag. Whenever you use those keywords in the text of your entries, the corresponding tag is assigned to your entry. Note that many automatted keywords may increase the time taken for saving an entry.'); +@define('PLUGIN_EVENT_FREETAG_KEYWORDS_ADD', 'Found keyword %s, tag %s assigned automatically.
'); + +@define('PLUGIN_EVENT_FREETAG_REBUILD_FETCHNO', 'Fetching entries %d to %d'); +@define('PLUGIN_EVENT_FREETAG_REBUILD_TOTAL', ' (totalling %d entries)...'); +@define('PLUGIN_EVENT_FREETAG_REBUILD_FETCHNEXT', 'Fetching next batch of entries...'); +@define('PLUGIN_EVENT_FREETAG_REBUILD', 'Reparse all automatted keywords'); +@define('PLUGIN_EVENT_FREETAG_REBUILD_DESC', 'Warning: This function will fetch and re-save every single one of your entries. This will take some time, and it might even damage existing articles. It is suggested you first backup your database! Click on "CANCEL" to abort this action.'); diff --git a/plugins/serendipity_event_freetag/lang_fr.inc.php b/plugins/serendipity_event_freetag/lang_fr.inc.php new file mode 100644 index 0000000..dc790dd --- /dev/null +++ b/plugins/serendipity_event_freetag/lang_fr.inc.php @@ -0,0 +1,76 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Marquage des entrées'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Autorise le marquage libre des billets'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Entrez tous les tags s\'appliquant. Séparer les tags multiples par des virgules (,)'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Tags pour ce billet: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Billets marqués comme %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Tags se rapportant au tag %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','Pas de tags en rapport.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'Tous les tags définis'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Gérer les tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Gérer tous les tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', 'Gérer les tags \'orphelins\''); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'Lister les billets non marqués'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'Lister les billets marqués \'orphelins\''); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'Aucune entrée non marquée'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Poids'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Action'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Renommer'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Séparer'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Effacer'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'voulez-vous vraiment effacer le tag %s ?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'Utilisez la virgule pour séparer les tags :'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Afficher le nuage de tags pour les tags en rapport ?'); +@define('PLUGIN_EVENT_FREETAG_SEND_HTTP_HEADER', 'Send X-FreeTag-HTTP-Headers'); +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Nuage de tags'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Montre une liste des tags existant pour les billets'); +@define('PLUGIN_FREETAG_NEWLINE', 'Retour à la ligne après chaque tag ?'); +@define('PLUGIN_FREETAG_XML', 'Afficher les icones XML ?'); +@define('PLUGIN_FREETAG_SCALE','Ajuster la taille du tag par rapport à sa fréquence (comme sur Technorati, flickr) ?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','Mise à jour des tags %d pour le billet numéro: %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'Combien de tags doivent être affichés ?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Combien de fois un tag doit-il être présent pour apparaître ?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Taille de police minimale (%) d\'un tag dans le nuage'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Taille de police maximale (%) d\'un tag dans le nuage'); + +@define('PLUGIN_FREETAG_META_KEYWORDS', 'Nombre de mots-clef à insérer dans lfile:///home/ptitlu/www/blog/plugins/serendipity_event_freetag/lang_fr.inc.phpe code HTML (0: désactivé)'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Billets ayant les mêmes tags :'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Afficher les billets ayant les même tags ?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','Combien de billets doivent être affichés ?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER', 'Montrer les tags dans le pied de page ?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC', 'Si activé, les tags seront affichés dans le pied de page du billet. Si non, ils seront affichés dans le corps du billet.'); +@define('PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS', 'Mettre les tags en minuscules.'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_TAGS', 'Tags en rapport'); +@define('PLUGIN_EVENT_FREETAG_TAGLINK', 'Lien Tag'); +@define('PLUGIN_EVENT_FREETAG_CAT2TAG', 'Créer des tags pour toutes les catégories associées ?'); +@define('PLUGIN_EVENT_FREETAG_CAT2TAG_DESC', 'Si activé, les catégories dont un billet fait partie seront ajoutées en tant que tag à ce billet.'); +@define('PLUGIN_EVENT_FREETAG_GLOBALLINKS', 'Convertir toutes les catégories assignées à des billets en tags.'); +@define('PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG_ENTRY', 'Catégories converties du billet #%d (%s): %s.'); +@define('PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG', 'Toutes les catogries sont converties.'); + +@define('PLUGIN_EVENT_FREETAG_KEYWORDS', 'Mots-clef automatisés'); +@define('PLUGIN_EVENT_FREETAG_KEYWORDS_DESC', 'Vous pouvez assigner des mots-clef (séparatés par ",") à chaque tag. Dès que vous utilisez ces mots-clef dans le texte de vos billets, le tag correspondant est à votre billet. Notez que ceci allonge le temps de sauvegarde de votre billet.'); +@define('PLUGIN_EVENT_FREETAG_KEYWORDS_ADD', 'Mot-clef trouvé %s, tag %s assigné automatiquement.
'); + +@define('PLUGIN_EVENT_FREETAG_REBUILD_FETCHNO', 'Recherche des billets %d à %d'); +@define('PLUGIN_EVENT_FREETAG_REBUILD_TOTAL', ' (totalisant %d billets)...'); +@define('PLUGIN_EVENT_FREETAG_REBUILD_FETCHNEXT', 'Recherche du prochain groupe de billets...'); +@define('PLUGIN_EVENT_FREETAG_REBUILD', 'Analyse des mots-clef automatiques'); +@define('PLUGIN_EVENT_FREETAG_REBUILD_DESC', 'Attention : Cette fonction va rechercher et re-sauvegarder chacun de vos billets. Cela va prendre du temps, et risque d\'endommager certains de vos billets. Il est conseillé de faire auparavant une sauvegarde de votre base de données ! Cliquez sur "ANNULER" pour arrêter.'); diff --git a/plugins/serendipity_event_freetag/lang_it.inc.php b/plugins/serendipity_event_freetag/lang_it.inc.php new file mode 100644 index 0000000..0d274c0 --- /dev/null +++ b/plugins/serendipity_event_freetag/lang_it.inc.php @@ -0,0 +1,53 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Freetag'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Consente il libero tagging dei post'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Inserisci i tag. I tag diversi vanno separati con la virgola (,)'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Tags: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Post con tag %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Tag simili a %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','Non ci sono tag associati.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'Tutti i tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Gestione tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Gestione di tutti i tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', 'Gestione dei tag \'foglie\''); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'Lista dei post senza tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'Lista dei post con tag \'foglie\''); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'Non ci sono post senza !'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Peso'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Azione'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Rinomina'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Splitta'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Cancella'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'Vuoi veramente cancellare il tag %s?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'Usa la virgola per separare i tag:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Visualizza la nuvola dei tag correlati ai post?'); +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Post simili:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Visualizzare post simili?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','Quanti post simili devono essere visualizzati?'); + +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Tags'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Mostra i tag associati ai post'); +@define('PLUGIN_FREETAG_NEWLINE', 'Fineriga dopo ogni tag?'); +@define('PLUGIN_FREETAG_XML', 'Visualizza le icone XML?'); +@define('PLUGIN_FREETAG_SCALE','Scala la dimensione dei font in base alla popolaritˆ (come Technorati, Flickr)?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','Salvando i tag %d per il post %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'Quanti tag devono essere visualizzati?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Quante occorrenze deve avere un tag per essere visibile?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Misura minima del font % di un tag nella nuvola'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Misura massima del font % di un tag nella nuvola'); +?> diff --git a/plugins/serendipity_event_freetag/lang_ja.inc.php b/plugins/serendipity_event_freetag/lang_ja.inc.php new file mode 100644 index 0000000..378594f --- /dev/null +++ b/plugins/serendipity_event_freetag/lang_ja.inc.php @@ -0,0 +1,61 @@ + + * EN-Revision: 1.11 + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'エントリのタグ'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'エントリの自由なタグを許可します。'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'いくつかのタグをエントリに適用します。カンマ(「,」)で複数のタグを分割します。'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'このエントリに定義されたタグ: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', '「%s」としてタグ付けされたエントリ'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'タグ「%s」に関連したタグ'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','関連したタグはありません。'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'すべての定義済みタグ'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'タグを管理する'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'すべてのタグを管理する'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', '「空」のタグを管理する'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'タグがないエントリの一覧'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', '「空」タグのエントリの一覧'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'エントリはタグがありません!'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'タグ'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', '重み'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', '操作'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', '名称変更'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', '分割'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', '削除'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'タグ「%s」を本当に削除しますか?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'カンマで区切ったタグを使用する:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', '関連タグへのタグクラウドを表示しますか?'); +@define('PLUGIN_EVENT_FREETAG_SEND_HTTP_HEADER', 'X-FreeTag-HTTP-Headers を送信する'); +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'エントリタグの表示'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'エントリの既存タグの一覧を表示します。'); +@define('PLUGIN_FREETAG_NEWLINE', '各タグの後に改行を入れますか?'); +@define('PLUGIN_FREETAG_XML', 'XML アイコンを表示しますか?'); +@define('PLUGIN_FREETAG_SCALE','(Technorati、flickr のように)タグのフォントサイズを人気度に依存して変化させますか?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','エントリ番号の %d 個のタグをアップグレード中: %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'いくつのタグを表示するべきですか?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'How many occurences must a tag have in order to be shown?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'タグクラウドの最小フォントサイズ(単位:パーセント)'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'タグクラウドの最大フォントサイズ(単位:パーセント)'); + +@define('PLUGIN_FREETAG_META_KEYWORDS', 'Number of meta keywords to embed in HTML source (0: disabled)'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'タグに関連するエントリ一覧:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Display related entries by tags?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','How many related entries should be dislayed?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER', 'フッターでタグを表示しますか?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC', 'If enabled, the tags will be shown in the footer of an entry. If disabled, the tags will be put inside the body/extended part of your entries.'); +@define('PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS', 'Lowercase tags'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_TAGS', '関連タグ'); +@define('PLUGIN_EVENT_FREETAG_TAGLINK', 'Taglink'); diff --git a/plugins/serendipity_event_freetag/lang_nl.inc.php b/plugins/serendipity_event_freetag/lang_nl.inc.php new file mode 100644 index 0000000..ef79860 --- /dev/null +++ b/plugins/serendipity_event_freetag/lang_nl.inc.php @@ -0,0 +1,61 @@ + + * NL-Revision: Revision of lang_nl.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Taggen van bijdragen'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Maakt het mogelijk om bijdragen van tags te voorzien'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Vul relevante tags in, meerdere tags kunnen met een komma worden gescheiden (,)'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Tags voor deze bijdrage: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Bijdragen met tag %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Tags gerelateerd aan tag %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED','Geen gerelateerde tags.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'Alle tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Beheer tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Beheer alle tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', 'Beheer \'leaf\' tags'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'Laat niet-getagde bijdragen zien'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'Laat \'leaf\' getagde bijdragen zien'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'Geen niet-getagde bijdragen!'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Gewicht'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Actie'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Hernoem'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Splits'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Verwijder'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'Weet je zeker dat je de %s tag wil verwijderen?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'gebruik een komma om tags te scheiden:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Toon tag cloud met gerelateerde tags?'); +@define('PLUGIN_EVENT_FREETAG_SEND_HTTP_HEADER', 'Stuur X-FreeTag-HTTP-Headers?'); +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Toon getagde bijdragen'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Toon een "tag cloud" van gebruikte tags'); +@define('PLUGIN_FREETAG_NEWLINE', 'Linefeed na elke tag?'); +@define('PLUGIN_FREETAG_XML', 'Toon XML-icoon?'); +@define('PLUGIN_FREETAG_SCALE','Lettergrootte obv populariteit (zoals Technorati, flickr)?'); +@define('PLUGIN_FREETAG_UPGRADE1_2','Bijwerken van %d tags voor bijdrage: %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'Hoeveel tags maximaal tonen?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Hoevaak moet een tag gebruikt zijn om getoond te worden?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Minimaal font percentage van tag in tag cloud?'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Maximaal font percentage van tag in tag cloud?'); + +@define('PLUGIN_FREETAG_META_KEYWORDS', 'Hoeveel meta keywords in HTML source invoegen? (0: uitgeschakeld)'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Gerelateerde bijdragen op basis van tags:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED','Toon gerelateerde bijdragen obv tags?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT','Hoeveel gerelateerde bijdragen tonen?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER', 'Tags in footer weergeven?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC', 'Wanneer aktief, worden de tags in de footer van een bijdrage weergegeven. Wanneer niet aktief, worden de tags in de verkorte/uitgebreide bijdrage geplaatst.'); +@define('PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS', 'Tags altijd in kleine letters?'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_TAGS', 'Gerelateerde tags'); +@define('PLUGIN_EVENT_FREETAG_TAGLINK', 'Taglink:'); diff --git a/plugins/serendipity_event_freetag/lang_pl.inc.php b/plugins/serendipity_event_freetag/lang_pl.inc.php new file mode 100644 index 0000000..c98a023 --- /dev/null +++ b/plugins/serendipity_event_freetag/lang_pl.inc.php @@ -0,0 +1,59 @@ + + * EN-Revision: Revision of lang_en.inc.php + */ + +// +// serendipity_event_freetag.php +// +@define('PLUGIN_EVENT_FREETAG_TITLE', 'Tagowanie wpisów'); +@define('PLUGIN_EVENT_FREETAG_DESC', 'Umo¿liwia dowolne tagowanie wpisów'); +@define('PLUGIN_EVENT_FREETAG_ENTERDESC', 'Wprowad¼ dowolne pasuj±ce tagi. Rozdzielaj tagi przecinkami (,).'); +@define('PLUGIN_EVENT_FREETAG_LIST', 'Tagi dla tego wpisu: %s'); +@define('PLUGIN_EVENT_FREETAG_USING', 'Wpisy otagowane jako %s'); +@define('PLUGIN_EVENT_FREETAG_SUBTAG', 'Tagi powi±zane z tagiem %s'); +@define('PLUGIN_EVENT_FREETAG_NO_RELATED', 'Brak powi±zanych tagów.'); +@define('PLUGIN_EVENT_FREETAG_ALLTAGS', 'Wszystkie zdefiniowane tagi'); +@define('PLUGIN_EVENT_FREETAG_MANAGETAGS', 'Zarz±dzaj tagami'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ALL', 'Zarz±dzaj wszystkimi tagami'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAF', 'Zarz±dzaj tagami \'Leaf\' (pojedynczymi)'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED', 'Lista nieotagowanych wpisów'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LEAFTAGGED', 'Lista wpisów z tagami \'Leaf\''); +@define('PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE', 'Nie ma nieotagowanych wpisów!'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_TAG', 'Tag'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_WEIGHT', 'Waga'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_LIST_ACTIONS', 'Akcja'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME', 'Zmieñ nazwê'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT', 'Rozdziel'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_ACTION_DELETE', 'Usuñ'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_CONFIRM_DELETE', 'Na pewno chcesz usun±æ tag %s?'); +@define('PLUGIN_EVENT_FREETAG_MANAGE_INFO_SPLIT', 'u¿yj przecinka by rozdzieliæ tagi:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD', 'Pokazaæ tag cloud (chmurê tagów) do powi±zanych wpisów?'); + +// +// serendipity_plugin_freetag.php +// +@define('PLUGIN_FREETAG_NAME', 'Tagi'); +@define('PLUGIN_FREETAG_BLAHBLAH', 'Pokazuje listê tagów zdefiniowanych dla wpisów'); +@define('PLUGIN_FREETAG_NEWLINE', 'Przej¶cie do nowej linii po ka¿dym tagu?'); +@define('PLUGIN_FREETAG_XML', 'Pokazywaæ ikony XML?'); +@define('PLUGIN_FREETAG_SCALE', 'Skalowaæ rozmiar czcionki w zale¿no¶ci od popularno¶ci taga (jak w serwisach Technorati czy flickr)?'); +@define('PLUGIN_FREETAG_UPGRADE1_2', 'Poprawiono %d tagów dla wpisu numer: %d'); +@define('PLUGIN_FREETAG_MAX_TAGS', 'Jak wiele tagów ma byæ pokazywanych?'); +@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Jak wiele razy musi wyst±piæ dany tag, by by³ pokazywany na li¶cie?'); + +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN', 'Minimalny rozmiar czcionki w procentach (%) w chmurze tagów (tag cloud)'); +@define('PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX', 'Maksymalny rozmiar czcionki w procentach (%) w chmurze tagów (tag cloud)'); + +@define('PLUGIN_FREETAG_META_KEYWORDS', 'Ilo¶æ s³ów kluczowych meta umieszczanych w ¼ródle HTML (0: wy³±czenie opcji)'); + +@define('PLUGIN_EVENT_FREETAG_RELATED_ENTRIES', 'Powi±zane wpisy wedlug tagów:'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED', 'Wy¶wietlaæ wpisy powi±zane wed³ug tagów?'); +@define('PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT', 'Jak wiele powi±zanych wpisów ma byæ pokazywanych?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER', 'Pokazywaæ tagi w stopce wpisu?'); +@define('PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC', 'Je¶li opcja jest w³±czona, tagi bêd± pokazywane w stopce wpisu. Je¶li opcja bêdzie wy³±czona, tagi zostan± umieszczone w tre¶ci (na samym dole) wpisu lub rozszerzonej tre¶ci wpisu.'); +@define('PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS', 'Poka¿ tagi tylko ma³ymi literami'); + diff --git a/plugins/serendipity_event_freetag/serendipity_event_freetag.php b/plugins/serendipity_event_freetag/serendipity_event_freetag.php new file mode 100644 index 0000000..28bb11d --- /dev/null +++ b/plugins/serendipity_event_freetag/serendipity_event_freetag.php @@ -0,0 +1,1742 @@ +add('name', PLUGIN_EVENT_FREETAG_TITLE); + $propbag->add('description', PLUGIN_EVENT_FREETAG_DESC); + $propbag->add('stackable', false); + $propbag->add('author', 'Garvin Hicking, Jonathan Arkell'); + $propbag->add('requirements', array( + 'serendipity' => '0.8', + 'smarty' => '2.6.7', + 'php' => '4.1.0' + )); + $propbag->add('version', '2.76'); + $propbag->add('event_hooks', array( + 'frontend_fetchentries' => true, + 'frontend_fetchentry' => true, + 'frontend_display:rss-2.0:per_entry' => true, + 'frontend_header' => true, +// 'frontend_display:rss-0.92:per_entry' => true, + 'frontend_display:rss-1.0:per_entry' => true, +// 'frontend_display:rss-0.91:per_entry' => true, + 'frontend_display:atom-0.3:per_entry' => true, + 'frontend_display:atom-1.0:per_entry' => true, + 'frontend_entryproperties' => true, + 'frontend_rss' => true, + 'entry_display' => true, + 'entries_header' => true, + 'backend_publish' => true, + 'backend_save' => true, + 'backend_display' => true, + 'backend_sidebar_entries' => true, + 'backend_sidebar_entries_event_display_managetags' => true, + 'backend_delete_entry' => true, + 'external_plugin' => true, + 'xmlrpc_updertEntry' => true, + 'xmlrpc_fetchEntry' => true, + 'xmlrpc_deleteEntry' => true, + 'css' => true + )); + $propbag->add('groups', array('BACKEND_EDITOR')); + $this->supported_properties = array('freetag_name', 'freetag_tagList'); + $this->dependencies = array('serendipity_plugin_freetag' => 'keep'); + $propbag->add('configuration', array('cat2tag', 'taglink', 'embed_footer', 'show_tagcloud', 'min_percent', 'max_percent', 'meta_keywords', 'show_related', 'show_related_count', 'lowercase_tags', 'send_http_header')); + } + + function introspect_config_item($name, &$propbag) { + global $serendipity; + switch($name) { + case 'show_tagcloud': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_SHOW_TAGCLOUD); + $propbag->add('description', ''); + $propbag->add('default', true); + break; + + case 'cat2tag': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_CAT2TAG); + $propbag->add('description', PLUGIN_EVENT_FREETAG_CAT2TAG_DESC); + $propbag->add('default', false); + break; + + case 'embed_footer': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_EMBED_FOOTER); + $propbag->add('description', PLUGIN_EVENT_FREETAG_EMBED_FOOTER_DESC); + $propbag->add('default', true); + break; + + case 'taglink': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_TAGLINK); + $propbag->add('description', ''); + $propbag->add('default', $serendipity['baseURL'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/tag/'); + break; + + case 'min_percent': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_TAGCLOUD_MIN); + $propbag->add('description', ''); + $propbag->add('default', '100'); + break; + + case 'max_percent': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_TAGCLOUD_MAX); + $propbag->add('description', ''); + $propbag->add('default', '300'); + break; + + case 'meta_keywords': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_FREETAG_META_KEYWORDS); + $propbag->add('description', ''); + $propbag->add('default', '0'); + break; + + case 'show_related': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_SHOW_RELATED); + $propbag->add('description', ''); + $propbag->add('default', true); + break; + + case 'show_related_count': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_SHOW_RELATED_COUNT); + $propbag->add('description', ''); + $propbag->add('default', '5'); + break; + + case 'lowercase_tags': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_LOWERCASE_TAGS); + $propbag->add('description', ''); + $propbag->add('default', true); + break; + + case 'send_http_header': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_SEND_HTTP_HEADER); + $propbag->add('description', ''); + $propbag->add('default', true); + break; + } + return true; + } + + function generate_content(&$title) { + $title = $this->title; + } + + function tableCreated($table = 'entrytags') { + global $serendipity; + + $q = "select count(tag) from {$serendipity['dbPrefix']}" . $table; + $row = serendipity_db_query($q, true, 'num'); + + if (!is_numeric($row[0])) { // if the response we got back was an SQL error.. :P + return false; + } else { + return true; + } + } + + function upgradeFromVersion1() { + global $serendipity; + + $q = "select count(*) from {$serendipity['dbPrefix']}entryproperties where property = 'ep_freetag_name'"; + $result = serendipity_db_query($q); + + if ((int)$result[0] > 0) { + return true; + } else { + return false; + } + } + + function convertEntryPropertiesTags() { + global $serendipity; + + $q = "select entryid, value from {$serendipity['dbPrefix']}entryproperties where property = 'ep_freetag_name'"; + $result = serendipity_db_query($q); + + if (!is_array($result)) { + return false; + } + + foreach($result as $entry) { + $tags = serendipity_event_freetag::makeTagsFromTaglist($entry['value']); + serendipity_event_freetag::addTagsToEntry($entry['entryid'], $tags); + + printf(PLUGIN_FREETAG_UPGRADE1_2, count($tags), $entry['entryid']); + echo '
'; + } + + $q = "delete from {$serendipity['dbPrefix']}entryproperties where property = 'ep_freetag_name'"; + $result = serendipity_db_query($q); + } + + function cleanup() { + global $serendipity; + + serendipity_event_freetag::install(); + } + + function install() { + global $serendipity; + + if (!serendipity_event_freetag::tableCreated('entrytags')) { + $q = "create table {$serendipity['dbPrefix']}entrytags (" . + "entryid int(10) not null, " . + "tag varchar(50) not null, " . + "primary key (entryid, tag)" . + ")"; + + $result = serendipity_db_schema_import($q); + + if ($result !== true) { + return; + } + + serendipity_db_schema_import("CREATE INDEX tagsentryindex ON {$serendipity['dbPrefix']}entrytags (entryid)"); + serendipity_db_schema_import("CREATE INDEX tagsTagIndex ON {$serendipity['dbPrefix']}entrytags (tag)"); + } + + if (!serendipity_event_freetag::tableCreated('tagkeywords')) { + $q = "create table {$serendipity['dbPrefix']}tagkeywords (" . + "keywords text, " . + "tag varchar(50) not null, " . + "primary key (tag)" . + ")"; + + $result = serendipity_db_schema_import($q); + } + + if (serendipity_event_freetag::upgradeFromVersion1()) { + serendipity_event_freetag::convertEntryPropertiesTags(); + } else { + echo "NOT UPGRADING!"; + } + } + + function getTagHtmlFromCSV($tagString) { + global $serendipity; + static $taglink = null; + + if ($taglink == null) { + $taglink = $this->get_config('taglink'); + } + + $links = array(); + if (empty($tagString)) { + return array(); + } + $tags = explode(',', $tagString); + foreach($tags as $tag) { + $tag = trim($tag); + if (empty($tag)) { + continue; + } + $links[] = ''; + } + + return implode(', ', $links); + } + + function getTagHtml($tags) { + global $serendipity; + static $taglink = null; + + $links = array(); + + if ($taglink == null) { + $taglink = $this->get_config('taglink'); + } + + if (!is_array($tags)) { + return ''; + } + + foreach($tags as $tag) { + $tag = trim($tag); + if (empty($tag)) { + continue; + } + $links[] = ''; + } + + return implode(', ', $links); + } + + function getRelatedEntries($tags, $postID) { + global $serendipity; + + if (!is_array($tags)) { + return false; + } + + $q = "SELECT DISTINCT e1.entryid, + e2.title + FROM {$serendipity['dbPrefix']}entrytags AS e1 + LEFT JOIN {$serendipity['dbPrefix']}entries AS e2 + ON e1.entryid = e2.id + WHERE e1.tag IN ('" . implode("', '", $tags) . "') + AND e1.entryid != " . (int)$postID . " + AND e2.isdraft = 'false' + " . (!serendipity_db_bool($serendipity['showFutureEntries']) ? " AND e2.timestamp <= " . time() : '') . " + ORDER BY e2.timestamp DESC + LIMIT " . $this->get_config('show_related_count', 10); + + $result = serendipity_db_query($q, false, 'assoc', false, 'entryid', 'title'); + + if (!is_array($result)) { + return false; + } + + return $result; + } + + function getRelatedEntriesHtml(&$entries) { + global $serendipity; + + if (!is_array($entries)) { + return false; + } + + $entrylink = $serendipity['baseURL'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '/'); + + $return = ''; + return $return; + } + + /* This method can be called statically. + Tags should be an array with the key being the tag name, and val being + the number of occurances. */ + function displayTags($tags, $xml, $nl, $scaling, $maxSize = 200, $minSize = 100) + { + global $serendipity; + static $taglink = null; + + if (!is_array($tags)) { + return false; + } + + if ($taglink == null) { + $taglink = $this->get_config('taglink'); + } + + $rsslink = $serendipity['serendipityHTTPPath'] . 'rss.php?serendipity[tag]='; + $xmlImg = serendipity_getTemplateFile('img/xml.gif'); + + $first = true; + $biggest = max($tags); + $smallest= min($tags); + + $scale = $biggest - $smallest; + + if ($scale < 0) { + $scale = 1; + } + + foreach($tags AS $name => $quantity) { + if (empty($name)) { + continue; + } + + if (!$first && !$nl && !$scaling) { + echo ', '; + } + + if ($xml) { + echo ' '; + } + + if ($scaling) { + if ($scale==0) { + $fontSize = $maxSize; + } elseif ($scale==1) { + if ($quantity==$biggest) { + $fontSize = $maxSize; + } else { + $fontSize = $minSize; + } + } else { + $fontSize = round(($quantity - $smallest)*(($maxSize - $minSize)/($scale))) + $minSize; + } + echo ''; + } + + echo ''; + + if ($scaling) { + echo ''; + } + + if ($nl) { + echo '
' . "\n"; + } else { + echo ' '; + } + + $first = false; + } + } + + function event_hook($event, &$bag, &$eventData, $addData = null) { + global $serendipity; + + $hooks = &$bag->get('event_hooks'); + if (isset($hooks[$event])) { + switch($event) { + case 'backend_delete_entry': + $this->deleteTagsForEntry((int)$eventData); + return true; + + case 'frontend_header': + $this->displayMetaKeywords($serendipity['GET']['id'] ); + return true; + + case 'frontend_display:rss-2.0:per_entry': + case 'frontend_display:rss-0.91:per_entry': + $eventData['display_dat'] .= $this->getFeedXmlForTags('category', $eventData['properties']['freetag_tags']); + return true; + + case 'frontend_display:rss-1.0:per_entry': + case 'frontend_display:rss-0.91:per_entry': + case 'frontend_display:atom-0.3:per_entry': + case 'frontend_display:atom-1.0:per_entry': + $eventData['display_dat'] .= $this->getFeedXmlForTags('dc:subject', $eventData['properties']['freetag_tags']); + return true; + + case 'external_plugin': + $uri_parts = explode('?', str_replace('&', '&', $eventData)); + $param = explode('/', $uri_parts[0]); + $plugincode = array_shift($param); + + if (($plugincode == "tag") || ($plugincode == "tags") || ($plugincode == "freetag")) { + /* Attempt to locate hidden variables within the URI */ + foreach ($serendipity['uriArguments'] as $k => $v) { + if ($v{0} == 'P') { /* Page */ + $page = substr($v, 1); + if (is_numeric($page)) { + $serendipity['GET']['page'] = $page; + unset($serendipity['uriArguments'][$k]); + if ($param[count($param)-1] == "P{$page}.html") { + array_pop($param); // knock it off of the param array as well + } + } + } + } + + if (count($param) == 0 || empty($param[0])) { + $serendipity['head_subtitle'] = PLUGIN_EVENT_FREETAG_ALLTAGS; + $this->displayTag = true; + $param = null; + } else if (count($param) == 1) { + $param = urldecode($param[0]); + $serendipity['head_subtitle'] = sprintf(PLUGIN_EVENT_FREETAG_USING, htmlspecialchars($param)); + $emit_404 = true; + } else { + $serendipity['head_subtitle'] = sprintf(PLUGIN_EVENT_FREETAG_USING, implode(' + ', array_map('htmlspecialchars', $param))); + $param = array_map('urldecode', $param); + $emit_404 = true; + } + $this->tags['show'] = $param; + + $serendipity['GET']['subpage'] = $eventData; + include_once(S9Y_INCLUDE_PATH . 'include/genpage.inc.php'); + if ($emit_404 && $this->TaggedEntries !== null && $this->TaggedEntries < 1) { + @header('HTTP/1.0 404 Not found'); + if (serendipity_db_bool($this->get_config('send_http_header', true))) { + @header('X-FreeTag: not found'); + } + } else { + if (serendipity_db_bool($this->get_config('send_http_header', true))) { + @header('X-FreeTag: ' . $this->TaggedEntries); + } + } + $raw_data = ob_get_contents(); + ob_end_clean(); + $serendipity['smarty']->assign('raw_data', $raw_data); + serendipity_gzCompression(); + $serendipity['smarty']->display(serendipity_getTemplateFile($serendipity['smarty_file'], 'serendipityPath')); + @define('NO_EXIT', true); + } + break; + + case 'backend_sidebar_entries': +?> +
  • + + + +
  • +eventData = $eventData; + $this->displayManageTags($event, $bag, $eventData, $addData); + + return true; + break; + + case 'backend_publish': + case 'backend_save': + if (!isset($serendipity['POST']['properties']) || !is_array($serendipity['POST']['properties']) || !isset($eventData['id'])) { + return true; + } + + $to_lower = serendipity_db_bool($this->get_config('lowercase_tags')); + $keylist = serendipity_db_query("SELECT tag, keywords FROM {$serendipity['dbPrefix']}tagkeywords", false, 'assoc'); + $automatted = array(array()); + if (is_array($keylist)) { + foreach($keylist AS $key) { + $keywords = explode(',', $key['keywords']); + foreach($keywords AS $keyword) { + $automatted[trim($keyword)][$key['tag']] = true; + } + } + } + + $tags = $this->makeTagsFromTagList($serendipity['POST']['properties']['freetag_tagList']); + + $searchtext = $eventData['body'] . $eventData['extended']; + foreach($automatted AS $keyword => $ktags) { + $keyword = trim($keyword); + if (empty($keyword)) continue; + if (!is_array($ktags) || count($ktags) < 1) continue; + if (stristr($searchtext, $keyword)) { + foreach($ktags AS $tag => $is_assigned) { + if (!is_array($tags) || !in_array(strtolower($tag), $tags)) { + if ($to_lower) { + if (function_exists("mb_strtolower")) { + $tag = mb_strtolower($tag); + } else { + $tag = strtolower($tag); + } + } + + $tags[] = $tag; + printf(PLUGIN_EVENT_FREETAG_KEYWORDS_ADD, htmlspecialchars($keyword), htmlspecialchars($tag)); + } + } + } + } + + if (!empty($tags)) { + if (serendipity_db_bool($this->get_config('cat2tag'))) { + if (is_array($cats = serendipity_fetchCategories())) { + $cats = serendipity_walkRecursive($cats, 'categoryid', 'parentid', VIEWMODE_THREADED); + foreach ($cats as $cat) { + if ($to_lower) { + if (function_exists("mb_strtolower")) { + $cat['category_name'] = mb_strtolower($cat['category_name']); + } else { + $cat['category_name'] = strtolower($cat['category_name']); + } + } + + $names = explode(',', $cat['category_name']); + foreach($names AS $name) { + $name = trim($name); + if (in_array($cat['categoryid'], $eventData['categories']) && !in_array($name, $tags)) { + $tags[] = $name; + } + } + } + } + } + $serendipity['POST']['properties']['freetag_tagList'] = implode(',', $tags); + + $this->deleteTagsForEntry($eventData['id']); + $this->addTagsToEntry($eventData['id'], $tags); + } else { + $this->deleteTagsForEntry($eventData['id']); + } + + return true; + break; + + case 'backend_display': + if (isset($serendipity['POST']['properties']['freetag_tagList'])) { + $tagList = $serendipity['POST']['properties']['freetag_tagList']; + } else if (isset($eventData['id'])) { + $tagList = implode(',', $this->getTagsForEntry($eventData['id'])); + } else { + $tagList = ''; + } + + if (serendipity_db_bool($this->get_config('lowercase_tags', true))) { + if (function_exists("mb_strtolower")) { + $tagList = mb_strtolower($tagList); + } else { + $tagList = strtolower($tagList); + } + } + + $freetags = $this->makeTagsFromTagList($tagList); + if (!empty($freetags)) { + $tagList = implode(',', $freetags); + } + + $taglist = (array)$this->getAllTags(); +?> + +
    + +
    + $count) { + if (substr($tag, 0, 1) != $lastletter) + echo " |".strtoupper(substr($tag, 0, 1)).': '; + echo "$tag, "; + $lastletter = substr($tag, 0, 1); + } +?> +
    + +
    + +
    +importEntryTagsIntoProperties($eventData, $addData); + + return true; + break; + + case 'frontend_fetchentries': + case 'frontend_fetchentry': + if (!empty($this->tags['show'])) { + if (is_array($this->tags['show'])) { + $showtag = array_map('serendipity_db_escape_string', $this->tags['show']); + } else { + $showtag = serendipity_db_escape_string($this->tags['show']); + } + } else if (!empty($serendipity['GET']['tag'])) { + $showtag = serendipity_db_escape_string(urldecode($serendipity['GET']['tag'])); + } + + if (is_string($show_tag) && serendipity_db_bool($this->get_config('lowercase_tags', true))) { + if (function_exists("mb_strtolower")) { + $showtag = mb_strtolower($showtag); + } else { + $showtag = strtolower($showtag); + } + } + + if (!empty($showtag)) { + if (is_string($showtag)) { + $join = "INNER JOIN {$serendipity['dbPrefix']}entrytags AS entrytags ON (e.id = entrytags.entryid) "; + $cond = "entrytags.tag = '$showtag' "; + } else if (is_array($showtag)) { + $taglist = implode('\',\'', $showtag); // outputs tag','tag2','tag3 + $total = count($showtag); + $join = "INNER JOIN {$serendipity['dbPrefix']}entrytags AS entrytags ". + "ON e.id = entrytags.entryid "; + $cond = "(entrytags.tag IN ('$taglist'))"; + $eventData['having'] = " HAVING count(entrytags.tag) = $total"; + } + + if (empty($eventData['and'])) { + $eventData['and'] = " WHERE $cond "; + } else { + $eventData['and'] .= " AND $cond "; + } + + + if (empty($eventData['joins'])) { + $eventData['joins'] = $join; + } else { + $eventData['joins'] .= $join; + } + + $this->displayTag = $showtag; + } + + return true; + break; + + case 'frontend_rss': + if (!empty($this->displayTag)) { + $eventData['title'] .= serendipity_utf8_encode(htmlspecialchars(' (' . sprintf(PLUGIN_EVENT_FREETAG_USING, $this->displayTag) . ')')); + } + + return true; + break; + + case 'entries_header': + if ($this->displayTag !== false && serendipity_db_bool($this->get_config('show_tagcloud'))) { + $this->displayTagCloud(); + } + + return true; + break; + + case 'css': + if (strpos($eventData, '.serendipity_freeTag')) { + // class exists in CSS, so a user has customized it and we don't need default + return true; + } + + $this->addToCSS($eventData); + + return true; + break; + + case 'entry_display': + // Don't display entries if we are getting a full tag list + + if (is_array($eventData)) { + $this->TaggedEntries = count($eventData); + if (serendipity_db_bool($this->get_config('send_http_header', true))) { + @header('X-FreeTag-Count: Array'); + } + } else { + if (serendipity_db_bool($this->get_config('send_http_header', true))) { + @header('X-FreeTag-Count: Empty'); + } + $this->TaggedEntries = 0; + } + if ($this->displayTag === true) { + $eventData['clean_page'] = true; + return true; + } + + // This falls into the default case, which returns false... Is this supposed to happen? + // Is it a bug? + // Is it a feature? + $this->displayEntry($eventData, $addData); + return true; + + case 'xmlrpc_updertEntry': + if (isset($eventData['id']) && isset($eventData['mt_keywords'])) { + //XMLRPC call + $tags = $this->makeTagsFromTagList($eventData['mt_keywords']); + if (!empty($tags)) { + $this->deleteTagsForEntry($eventData['id']); + $this->addTagsToEntry($eventData['id'], $tags); + } + } + return true; + break; + + case 'xmlrpc_fetchEntry': + $eventData['mt_keywords']=implode(',', $this->getTagsForEntry($eventData['id'])); + return true; + break; + + case 'xmlrpc_deleteEntry': + if (isset($eventData["id"])) { + $this->deleteTagsForEntry($eventData["id"]); + } + + return true; + break; + + default: + return false; + break; + } + } else { + return false; + } + } + + function displayEntry(&$eventData, $addData) + { + global $serendipity; + $msg = '
    ' . PLUGIN_EVENT_FREETAG_LIST . '
    '; + + if (serendipity_db_bool($this->get_config('embed_footer'))) { + $field = 'add_footer'; + } else { + if (strlen($eventData[0]['extended']) > 0) { + $field = 'extended'; + } else { + $field = 'body'; + } + + } + + if ($addData['extended']) { + $key =& $this->getFieldReference($field, $eventData[0]); + + $tags = $this->getTagsForEntries(array($eventData[0]['id'])); + if (!empty($tags)) { + $key .= sprintf($msg, $this->getTagHtml($tags[$eventData[0]['id']])); + } + if (serendipity_db_bool($this->get_config('show_related', true))) { + $passvar =& $this->getRelatedEntries($tags[$eventData[0]['id']], $eventData[0]['id']); + if (is_array($passvar)) { + $eventData[0]['add_footer'] .= $this->getRelatedEntriesHtml($passvar); + } + } + } else if ($addData['preview']) { + $eventData[0]['exflag'] = 1; + if (!empty($serendipity['POST']['properties']['freetag_tagList'])) { + $eventData[0][$field] .= sprintf($msg, $this->getTagHtmlFromCSV($serendipity['POST']['properties']['freetag_tagList'])); + } + if (serendipity_db_bool($this->get_config('show_related', true))) { + $ctags = explode(',', $serendipity['POST']['properties']['freetag_tagList']); + $passvar =& $this->getRelatedEntries($ctags, $eventData[0]['id']); + if (is_array($passvar)) { + $eventData[0]['add_footer'] .= $this->getRelatedEntriesHtml($passvar); + } + } + } else { + $elements = count($eventData); + $skeys = array(); + for ($i = 0; $i < $elements; $i++) { + if (empty($eventData[$i]['properties']['freetag_tags'])) { + continue; + } + + if (!isset($eventData[$i]['add_footer'])) { + $eventData[$i]['add_footer'] = ''; + } + + $cont = sprintf($msg, $this->getTagHtml($eventData[$i]['properties']['freetag_tags'])); + if ($field == 'add_footer') { + $skeys[$i] =& $eventData[$i]['add_footer']; + } elseif (strlen($eventData[$i]['extended']) > 0) { + $skeys[$i] =& $this->getFieldReference('extended', $eventData[$i]); + } else { + $skeys[$i] =& $this->getFieldReference('body', $eventData[$i]); + } + $skeys[$i] .= $cont; + } + } + } + + /** + * Returns a list of all tags + * This performs a memoization operation, so that if we happen to be + * getting all tags more then one time per request, we only perform + * the SQL query once + */ + // static + function makeTagsFromTaglist($tagList) + { + $freetags = explode(',', $tagList); + foreach($freetags AS $idx => $tag) { + $tag = trim($tag); + if (!empty($tag)) { + $tags[] = $tag; + } + } + return $tags; + } + + function getAllTags() + { + global $serendipity; + + static $memo = false; + + if (is_array($memo)) { + return $memo; + } + + $q = "SELECT tag, count(tag) as total + FROM {$serendipity['dbPrefix']}entrytags + GROUP BY tag + ORDER BY tag"; + + $rows = serendipity_db_query($q); + + if (!is_array($rows)) { + echo $rows; + return false; + } + + $memo = array(); + foreach((array)$rows as $r) { + $memo[$r['tag']] = $r['total']; + } + + return $memo; + } + + function displayTagCloud() + { + $tags = $this->getTagCloudTags(); + + echo '
    '; + echo '

    '; + $tagTitle = is_array($this->displayTag) ? implode(' + ',$this->displayTag) : $this->displayTag; + printf ($title, $tagTitle); + echo '

    '; + echo '
    '; + echo '' . "\n"; + if (!empty($tags)) { + $min = $this->get_config('min_percent', 100); + $max = $this->get_config('max_percent', 300); + serendipity_event_freetag::displayTags($tags, false, false, true, $max, $min); + } else { + echo PLUGIN_EVENT_FREETAG_NO_RELATED; + } + echo '
    '; + echo '
    '; + } + + function getTagCloudTags() { + $rows = serendipity_db_query($this->getTagCloudQuery()); + + foreach((array)$rows as $r) { + $tags[$r['tag']] = $r['total']; + } + return $tags; + } + + /* Todo: + - turn use of instance var to parameter */ + function getTagCloudQuery() + { + global $serendipity; + if ($this->displayTag === true) { + $title = PLUGIN_EVENT_FREETAG_ALLTAGS; + $q = "SELECT tag, count(tag) as total FROM {$serendipity['dbPrefix']}entrytags GROUP BY tag ORDER BY tag"; + } else { + $title = PLUGIN_EVENT_FREETAG_SUBTAG; + + if (is_string($this->displayTag)) { + $cond = "main.tag = '$this->displayTag'"; + $ncond = "neg.tag != '$this->displayTag'"; + $join = "LEFT JOIN {$serendipity['dbPrefix']}entrytags AS neg ". + "ON main.entryid = neg.entryid "; + $totalModifier = ''; + } else if (is_array($this->displayTag)) { + $join = "LEFT JOIN {$serendipity['dbPrefix']}entrytags AS neg ". + "ON main.entryid = neg.entryid "; + $ccond = ''; + $ncond = ''; + + $first = true; + $total = count($this->displayTag); + + $totalModifier = " - $total"; + + for ($i = 0; $i < $total; $i++) { + if (!$first) { + $ncond .= " AND "; + $cond .= " AND "; + } else { + $first = false; + } + + $join .= "LEFT JOIN {$serendipity['dbPrefix']}entrytags AS sub{$i} ". + "ON main.entryid = sub{$i}.entryid "; + $cond .= "sub{$i}.tag = '{$this->displayTag[$i]}' "; + $ncond .= "neg.tag != '{$this->displayTag[$i]}' "; + } + } else { + echo "FATAL ERROR! Unrecognized type for serendipity_event_freetag::$displayTag !"; + } + $q = "SELECT neg.tag AS tag, count(neg.tag) {$totalModifier} AS total + FROM {$serendipity['dbPrefix']}entrytags AS main + {$join} + WHERE ($cond) + AND ($ncond) + GROUP BY neg.tag"; + } + return $q; + } + + /* Todo: + - turn use of instance var to parameter */ + function displayMetaKeywords($id = null) + { + global $serendipity; + $max_keywords = (int)$this->get_config('meta_keywords', 0); + if ($max_keywords < 1) { + return; + } + if ($this->displayTag !== false && $this->displayTag !== true) { //show related tags + $query = $this->getTagCloudQuery(); + $query = $query . " ORDER BY total DESC LIMIT " . $max_keywords; + } else if ($id == null) { // show all tags + // select most used tags in descending order + $query = "SELECT tag, + count(tag) AS total + FROM {$serendipity['dbPrefix']}entrytags + GROUP BY tag + ORDER BY total DESC + LIMIT " . $max_keywords; + } else { // show tags for entry + // select tags from entry $id ordered by most usage descending + $query = "SELECT one.tag, + two.entryid, + count(two.tag) AS total + FROM {$serendipity['dbPrefix']}entrytags + AS one + JOIN {$serendipity['dbPrefix']}entrytags AS two + ON two.entryid = " . $id . " + AND one.tag = two.tag + GROUP BY one.tag + ORDER BY total DESC + LIMIT " . $max_keywords; + } + $rows = serendipity_db_query($query); + if (!is_array($rows)) { + return; + } + echo "tags['show'])) { + if (is_array($this->tags['show'])) { + foreach($this->tags['show'] AS $r) { + $not_first ? print(', ') : $not_first = true; + echo $r; + } + } else { + echo $this->tags['show']; + $not_first = true; + } + } + foreach($rows AS $r) { + if (empty($r['tag'])) { + continue; + } + $not_first ? print(', ') : $not_first = true; + echo htmlspecialchars($r['tag']); + } + echo "\" />"; + } + + function getRelatedTags($tag) { + global $serendipity; + + $q = "SELECT sub.tag AS tag, count(sub.tag) AS total + FROM {$serendipity['dbPrefix']}entrytags AS main + LEFT JOIN {$serendipity['dbPrefix']}entrytags AS sub + ON main.entryid = sub.entryid + WHERE main.tag = '$tag' + AND sub.tag != '$tag' + GROUP BY sub.tag + ORDER BY sub.tag"; + + $rows = serendipity_db_query($q); + + if (!is_array($rows)) { + if ($rows !== true && $rows !== 1 && $rows !== 'true') { + echo $rows; + } + return array(); + } + + foreach($rows as $r) { + $tags[$r['tag']] = $r['total']; + } + + return $tags; + } + + function getLeafTags($leafWeight=1) { + global $serendipity; + + $q = "SELECT tag, count(tag) as total + FROM {$serendipity['dbPrefix']}entrytags + GROUP BY tag + HAVING count(tag) <= $leafWeight + ORDER BY tag"; + + $rows = serendipity_db_query($q); + + if (!is_array($rows)) { + echo $rows; + } + + $tags = array(); + foreach((array)$rows as $r) { + $tags[$r['tag']] = $r['total']; + } + + return $tags; + } + + function getTagsForEntries($entries) { + global $serendipity; + + $q = "SELECT entryid, tag from {$serendipity['dbPrefix']}entrytags WHERE entryid IN (".implode(',', $entries).") order by entryid, tag"; + $result = serendipity_db_query($q); + + if (!is_array($result)) { + return false; + } + + $return = array(); + foreach($result as $idx => $row) { + $return[$row['entryid']][] = $row['tag']; + } + + return $return; + } + + function getTagsForEntry($entryId) { + $array = $this->getTagsForEntries(array($entryId)); + return (is_array($array) ? array_pop($array) : array()); + } + + function deleteTagsForEntry($entryId) { + global $serendipity; + + $q = "DELETE FROM {$serendipity['dbPrefix']}entrytags WHERE entryid = ".(int)$entryId; + serendipity_db_query($q); + } + + // Static + function addTagsToEntry($entryId, $tags) { + global $serendipity; + + if (!is_array($tags)) { + return false; + } + + foreach($tags as $tag) { + $q = "INSERT INTO {$serendipity['dbPrefix']}entrytags (entryid, tag) VALUES (".(int)$entryId.", '".serendipity_db_escape_string($tag)."')"; + serendipity_db_query($q); + } + } + + // This may not be the right way to do this... + function importEntryTagsIntoProperties(&$eventData, $addData) { + // we do a dual loop here, which is probably the worst thing to do. + // A better thing might be some kind of array merge action, but I am not + // entirely sure how do do that with the arrays we are given. + // + // RefactorMe Later. + + // Loop one in getTagsForEntries + $tagGroups = $this->getTagsForEntries(array_keys($addData)); + + // Loop 2 + if (is_array($tagGroups)) { + foreach($tagGroups as $entryId => $tagList) { + $eventData[$addData[$entryId]]['properties']['freetag_tags'] = $tagList; + $eventData[$addData[$entryId]]['properties']['freetag_tagList'] = implode(",", $tagList); + } + } + } + + function getFeedXmlForTags($element, $tagList) { + $out = ''; + if (!is_array($tagList)) { + return $out; + } + + foreach($tagList as $tag) { + $out .= serendipity_utf8_encode("<$element>".htmlspecialchars($tag)."\n"); + } + return $out; + } + + function displayManageTags($event, &$bag, &$eventData, $addData) { + global $serendipity; + + if ($this->get_config('dbversion', 1) != 2) { + $this->install(); + $this->set_config('dbversion', 2); + } + ?> +
    + +
    + eventData['GET']['tagaction'])) { + $this->displayTagAction($this->eventData); + } + + switch(@$this->eventData['GET']['tagview']) { + case "entryuntagged": + $this->displayUntaggedEntries(); + break; + + case "entryleaf": + $this->displayLeafTaggedEntries(); + break; + + case "all": + $tags = (array)$this->getAllTags(); + $this->displayEditTags($this->eventData, $tags); + break; + + case "leaf": + $tags = $this->getLeafTags(); + $this->displayEditTags($this->eventData, $tags); + break; + + case 'keywords': + $tags = (array)$this->getAllTags(); + $this->displayKeywordAssignment($tags); + break; + + case 'tagupdate': + $per_fetch = 25; + $page = (isset($serendipity['GET']['page']) ? $serendipity['GET']['page'] : 1); + $from = ($page-1)*$per_fetch; + $to = ($page)*$per_fetch; + printf(PLUGIN_EVENT_FREETAG_REBUILD_FETCHNO, $from, $to); + $entries = serendipity_fetchEntries( + null, + true, + $per_fetch, + false, + false, + 'timestamp DESC', + '', + true + ); + + $total = serendipity_getTotalEntries(); + printf(PLUGIN_EVENT_FREETAG_REBUILD_TOTAL . '
    ', $total); + + if (is_array($entries)) { + foreach($entries AS $idx => $entry) { + unset($entry['orderkey']); + unset($entry['loginname']); + unset($entry['email']); + printf('%d - "%s"
    ', $entry['id'], htmlspecialchars($entry['title'])); + $up = serendipity_updertEntry($entry); + if (is_string($up)) { + echo "
    $up
    \n"; + } + echo DONE . "
    \n"; + } + } + + echo '
    '; + + if ($to < $total) { +?> + +' . DONE . ''; + } + break; + + case 'cat2tag': + $e = serendipity_db_query("SELECT e.id, e.title, c.category_name, et.tag + FROM {$serendipity['dbPrefix']}entries AS e + LEFT OUTER JOIN {$serendipity['dbPrefix']}entrycat AS ec + ON e.id = ec.entryid + LEFT OUTER JOIN {$serendipity['dbPrefix']}category AS c + ON ec.categoryid = c.categoryid + LEFT OUTER JOIN {$serendipity['dbPrefix']}entrytags AS et + ON e.id = et.entryid", false, 'assoc'); + // Get all categories and tags of all entries + $entries = array(); + foreach($e AS $row) { + $entries[$row['id']]['title'] = $row['title']; + $entries[$row['id']]['categories'][$row['category_name']] = $row['category_name']; + $entries[$row['id']]['tags'][$row['tag']] = $row['tag']; + } + + // Cycle all entries + foreach($entries AS $id => $props) { + $newtags = array(); + // Fetch all tags that should be added + foreach($props['categories'] AS $tag) { + if (empty($tag)) continue; + $newtags[$tag] = $tag; + } + + // Subtract all tags that already exist + foreach($props['tags'] AS $tag) { + unset($newtags[$tag]); + } + + if (count($newtags) < 1) { + continue; + } + + $this->addTagsToEntry($id, $newtags); + printf(PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG_ENTRY . '
    ', + $id, + htmlspecialchars($props['title']), + htmlspecialchars(implode(', ', $newtags)) + ); + } + + echo PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG . '
    '; + break; + + default: + if (!empty($this->eventData['GET']['tagview'])) { + echo "Can't execute {$this->eventData['GET']['tagview']}"; + } + break; + } + return true; + } + + function displayUntaggedEntries() { + global $serendipity; + + $q = "SELECT e.id as id, e.title as title + FROM ${serendipity['dbPrefix']}entries AS e + LEFT OUTER JOIN ${serendipity['dbPrefix']}entrytags AS t + ON e.id = t.entryid + WHERE entryid IS NULL + GROUP BY e.id, e.title"; + + $this->displayEditEntries($q); + } + + function displayLeafTaggedEntries() { + global $serendipity; + + $q = "SELECT e.id as id, e.title as title, count(*) as total + FROM ${serendipity['dbPrefix']}entries AS e + LEFT JOIN ${serendipity['dbPrefix']}entrytags AS t + ON e.id = t.entryid + GROUP BY e.id, e.title + HAVING count(*) = 1"; + + $this->displayEditEntries($q); + } + + function displayEditEntries($q) { + global $serendipity; + + $r = serendipity_db_query($q); + + if ($r === true) { + echo PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE; + } else if (!is_array($r)) { + echo $r; + } else { + foreach ($r as $row) { + echo '

    + + ' . $row['title'] . ' +

    '; + } + } + } + + function displayKeywordAssignment($taglist) { + global $serendipity; + + if ($serendipity['POST']['keywordsubmit']) { + serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}tagkeywords WHERE tag = '" . serendipity_db_escape_string(urldecode($serendipity['POST']['tag'])) . "'"); + serendipity_db_query("INSERT INTO {$serendipity['dbPrefix']}tagkeywords (tag, keywords) VALUES ('" . serendipity_db_escape_string(urldecode($serendipity['POST']['tag'])) . "', '" . serendipity_db_escape_string($serendipity['POST']['keywords']) . "')"); + } + + $keys = array(); + $keylist = serendipity_db_query("SELECT tag, keywords FROM {$serendipity['dbPrefix']}tagkeywords ORDER BY tag"); + if (is_array($keylist)) { + foreach($keylist AS $key) { + $keys[$key['tag']] = $key['keywords']; + } + } + $url = FREETAG_MANAGE_URL . "&serendipity[tagview]=".$this->eventData['GET']['tagview']; + + echo '
    ' . PLUGIN_EVENT_FREETAG_KEYWORDS_DESC . '

    '; +?> +
    + + + + + + + $weight) { +?> + + + + + + +
    + + + + + + + + + + +
    +
    +eventData['GET']['tagview']; +?> + + + + + + + $weight) { +?> + + + + + + +
    + + + +
    +eventData['GET']['tag']); + $action = urldecode($this->eventData['GET']['tagaction']); + if (!in_array($this->eventData['GET']['tagaction'], $validActions)) + exit ("DON'T HACK!"); + + if ($this->eventData['GET']['commit'] == 'true') { + $method = 'get'.$this->eventData['GET']['tagaction'].'TagQuery'; + $q = $this->$method($tag, $this->eventData); + echo $this->eventData['GET']['tagaction'] . " Completed"; + } else { + $method = 'display'.$this->eventData['GET']['tagaction']."Tag"; + $this->$method($tag, $this->eventData); + } + } + + function getManageUrlAsHidden(&$eventData) { + return ' + '; + } + + function displayRenameTag($tag, &$eventData) { +?> +
    + getManageUrlAsHidden($this->eventData) ?> + + + + + => +
    +eventData['GET']['tagview']; + $yes = FREETAG_MANAGE_URL . "&serendipity[tagview]=".$this->eventData['GET']['tagview']. + "&serendipity[tagaction]=delete". + "&serendipity[tag]=".urlencode($tag)."&serendipity[commit]=true"; +?> +

    +

       

    + +
    + getManageUrlAsHidden($this->eventData) ?> + + + + +


    + foobarbaz => foo,bar,baz

    + => + +
    +makeTagsFromTaglist(urldecode($this->eventData['GET']['newtags'])); + $tag = serendipity_db_escape_string($tag); + + $q = "SELECT entryid from ${serendipity['dbPrefix']}entrytags where tag = '$tag'"; + $entries = serendipity_db_query($q); + + if (!is_array($entries)) { + echo $entries; + return false; + } + + $q = "DELETE FROM ${serendipity['dbPrefix']}entrytags where tag = '$tag'"; + $r = serendipity_db_query($q); + if ($r !== true) { + echo $r; + return false; + } + + foreach ($entries as $entryid) { + foreach ($newtags as $tag) { + $q = "INSERT INTO ${serendipity['dbPrefix']}entrytags (entryid, tag) + VALUES ('${entryid['entryid']}', '$tag')"; + $r = serendipity_db_query($q); + } + } + } + + function addToCSS(&$eventData) { + $eventData .= ' +.serendipity_freeTag +{ + margin-left: auto; + margin-right: 0px; + text-align: right; + font-size: 7pt; + display: block; + margin-top: 5px; + margin-bottom: 0px; +} + +.serendipity_freeTag_related +{ + margin-left: 50px; + margin-right: 0px; + text-align: left; + font-size: small; + display: block; + margin-top: 20px; + margin-bottom: 0px; +} + +.serendipity_freetag_taglist +{ + margin: 10px; + border: 1px solid #6265F0; + padding: 5px; + background-color: #B5B8FF; + text-align: justify; +} + +.serendipity_freeTag a +{ + font-size: 7pt; + text-decoration: none; +} + +.serendipity_freeTag a:hover +{ + color: green; + text-decoration: underline; +} +img.serendipity_freeTag_xmlButton +{ + vertical-align: bottom; + display: inline; + border: 0px +} +'; + } +} + +/* vim: set sts=4 ts=4 expandtab : */ diff --git a/plugins/serendipity_event_freetag/serendipity_plugin_freetag.php b/plugins/serendipity_event_freetag/serendipity_plugin_freetag.php new file mode 100644 index 0000000..a041283 --- /dev/null +++ b/plugins/serendipity_event_freetag/serendipity_plugin_freetag.php @@ -0,0 +1,146 @@ +title = $this->get_config('title', $this->title); + + $propbag->add('name', PLUGIN_FREETAG_NAME); + $propbag->add('description', PLUGIN_FREETAG_BLAHBLAH); + $propbag->add('stackable', false); + $propbag->add('author', 'Garvin Hicking, Jonathan Arkell'); + $propbag->add('requirements', array( + 'serendipity' => '0.8', + 'smarty' => '2.6.7', + 'php' => '4.1.0' + )); + $propbag->add('version', '2.39'); + $propbag->add('groups', array('FRONTEND_ENTRY_RELATED')); + $propbag->add('configuration', array('title', 'show_xml', 'show_newline', 'taglink', 'scale_tag', 'max_tags', 'treshold_tag_count')); + $this->dependencies = array('serendipity_event_freetag' => 'keep'); + } + + + function introspect_config_item($name, &$propbag) { + global $serendipity; + switch($name) { + case 'title': + $propbag->add('type', 'string'); + $propbag->add('name', TITLE); + $propbag->add('description', TITLE_FOR_NUGGET); + $propbag->add('default', PLUGIN_FREETAG_NAME); + break; + + case 'taglink': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_EVENT_FREETAG_TAGLINK); + $propbag->add('description', ''); + $propbag->add('default', $serendipity['baseURL'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/tag/'); + break; + + case 'scale_tag': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_FREETAG_SCALE); + $propbag->add('description', ''); + $propbag->add('default', false); + break; + + case 'show_xml': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_FREETAG_XML); + $propbag->add('description', ''); + $propbag->add('default', true); + break; + + case 'show_newline': + $propbag->add('type', 'boolean'); + $propbag->add('name', PLUGIN_FREETAG_NEWLINE); + $propbag->add('description', ''); + $propbag->add('default', true); + break; + + case 'max_tags': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_FREETAG_MAX_TAGS); + $propbag->add('description', ''); + $propbag->add('default', '100'); + break; + + case 'treshold_tag_count': + $propbag->add('type', 'string'); + $propbag->add('name', PLUGIN_FREETAG_TRESHOLD_TAG_COUNT); + $propbag->add('description', ''); + $propbag->add('default', '2'); + break; + } + + return true; + } + + function generate_content(&$title) + { + global $serendipity; + + $title = $this->get_config('title', $this->title); + + if ($this->get_config('max_tags', 0) != 0) { + $limit = "LIMIT " . $this->get_config('max_tags', 0); + } else { + $limit = ''; + } + + $query = "SELECT et.tag, count(et.tag) AS total + FROM {$serendipity['dbPrefix']}entrytags AS et + LEFT OUTER JOIN {$serendipity['dbPrefix']}entries AS e + ON et.entryid = e.id + WHERE e.isdraft = 'false' " + . (!serendipity_db_bool($serendipity['showFutureEntries']) ? " AND e.timestamp <= " . time() : '') . " + GROUP BY et.tag + HAVING count(et.tag) >= " . $this->get_config('treshold_tag_count') . " + ORDER BY et.tag " . $limit; + + $rows = serendipity_db_query($query); + + if (!is_array($rows)) { + return; + } + + // not sure if we can optimize this loop... :/ + // Probably through some SQL magick. + foreach($rows as $r) { + $tags[$r['tag']] = $r['total']; + } + + $xml = serendipity_db_bool($this->get_config('show_xml')); + $nl = serendipity_db_bool($this->get_config('show_newline')); + $scaling = serendipity_db_bool($this->get_config('scale_tag')); + + serendipity_event_freetag::displayTags($tags, $xml, $nl, $scaling); + } + + function cleanup() { + global $serendipity; + + serendipity_event_freetag::install(); + } +} + +/* vim: set sts=4 ts=4 expandtab : */