freetag decode fix and list option
This commit is contained in:
parent
86550df882
commit
67a5659ae6
7
serendipity_event_freetag/.htaccess
Normal file
7
serendipity_event_freetag/.htaccess
Normal file
|
@ -0,0 +1,7 @@
|
|||
<Files .htaccess>
|
||||
Allow from all
|
||||
</Files>
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine Off
|
||||
</IfModule>
|
|
@ -1,3 +1,14 @@
|
|||
3.58:
|
||||
----
|
||||
* Fix doubled encoded umlaut taglinks by searchengines backlinks.
|
||||
* Added a new option to allow showing taglink entries as a linklist.
|
||||
This adds a 'taglist' tag as a reserved command to tags,
|
||||
which not allows this tag as a normal tag any further.
|
||||
The addition can be done either by the preset taglink as "/plugin/taglist/"
|
||||
or manually added by certain taglinks as "/plugin/tag/allyourtags/taglist".
|
||||
This needs you to modify your templates entries.tpl file,
|
||||
as described in the documentation file or the README.
|
||||
|
||||
3.57:
|
||||
----
|
||||
Stricter array check to prevent PHP notices
|
||||
|
|
|
@ -63,3 +63,55 @@ foreach($rows AS $row) {
|
|||
htmlspecialchars($row['title'])
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
The following code illustrates on how to change your templates entries.tpl file in case of enabled option 'tags-as-list':
|
||||
|
||||
{serendipity_hookPlugin hook="entries_header" addData="$entry_id"}
|
||||
|
||||
{if $taglist}
|
||||
<article id="taglistentries" class="clearfix serendipity_entry">
|
||||
<div class="clearfix content serendipity_entry_body">
|
||||
<h2>{$head_subtitle}</h2>
|
||||
{foreach from=$entries item="dategroup"}
|
||||
{foreach from=$dategroup.entries item="entry"}
|
||||
|
||||
<div class="static-entries-list">
|
||||
({$dategroup.date|date_format:"%d.%m.%Y"}) <a href="{$entry.link}">{$entry.title|default:$entry.id}</a>
|
||||
</div>
|
||||
|
||||
{/foreach}
|
||||
{/foreach}
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{else}
|
||||
|
||||
--- OLD CODE START-and keep --
|
||||
|
||||
{foreach from=$entries item="dategroup"}
|
||||
{foreach from=$dategroup.entries item="entry"}
|
||||
{assign var="entry" value=$entry scope="parent"}
|
||||
*** LONG CODE FOR THE entries output article ***
|
||||
{/foreach}
|
||||
{foreachelse}
|
||||
{if not $plugin_clean_page}
|
||||
<p class="nocontent">{$CONST.NO_ENTRIES_TO_PRINT}</p>
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
--- OLD CODE END and keep---
|
||||
|
||||
{/if}{* not taglist end *}
|
||||
|
||||
--- OLD CODE FOOTER INFO START and keep ---
|
||||
|
||||
{if $footer_info or $footer_prev_page or $footer_next_page}
|
||||
*** inside CODE ***
|
||||
{/if}
|
||||
|
||||
--- OLD CODE FOOTER INFO END and keep ---
|
||||
|
||||
{serendipity_hookPlugin hook="entries_footer"}
|
||||
|
|
|
@ -1,354 +0,0 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Dokumentace: Freetag</title>
|
||||
<style>
|
||||
pre {
|
||||
display: block;
|
||||
padding: 5px;
|
||||
border: solid 1px #333333;
|
||||
background-color: #cccccc;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Dokumentace k pluginu 'Freetag'<br />
|
||||
<small>(serendipity_event_freetag)</small></h1>
|
||||
|
||||
<p>Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) a naposledy zkontroloval dne 20.4.2013. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i <a href="../README">aktuální anglické "README"</a>, <a href="../README.txt">"README.txt"</a> a <a href="../ChangeLog">ChangeLog</a>.
|
||||
<p>
|
||||
|
||||
<h2>Popis pluginu</h2>
|
||||
<p>
|
||||
Umožňuje libovolné přidávání klíčových slov k příspěvkům
|
||||
</p>
|
||||
|
||||
<h2>Užitečné skripty</h2>
|
||||
|
||||
<p>Následující kód ukazuje příklad, jak použít rozšířený výstup do smarty šablony. Takto může například vypadat šablona "entries.tpl"
|
||||
<pre>
|
||||
{if isset($entry.freetag.extended) && $entry.freetag.extended == 1}
|
||||
{if $entry.freetag.tags.tags}
|
||||
<div class="serendipity_freeTag">{$entry.freetag.tags.description}
|
||||
{foreach from=$entry.freetag.tags.tags item="tag"}
|
||||
{$tag}
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
{if $is_single_entry or $is_preview}
|
||||
{$entry.freetag.related.description}
|
||||
<ul class="serendipity_freeTag_related">
|
||||
{foreach from=$entry.freetag.related.entries item="link"}
|
||||
<li>{$link}</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
{/if}
|
||||
{else}
|
||||
{$entry.freetag}
|
||||
{/if}
|
||||
</pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Pomocí následujícího sql dotazu můžete v databázi vytvořit tagy z existujících kategorií:
|
||||
<pre>
|
||||
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;
|
||||
</pre>
|
||||
(převzato z <a href="http://pixelated-dreams.com/archives/229-Spring-Cleaning.html">http://pixelated-dreams.com/archives/229-Spring-Cleaning.html</a>)
|
||||
</p>
|
||||
<p>
|
||||
A nebo můžete pro vytvoření tagů z kategorií použít následující skript:
|
||||
<pre>
|
||||
<?php
|
||||
include 'serendipity_config.inc.php';
|
||||
|
||||
$rows = serendipity_db_query("SELECT e.id, e.title, c.category_name
|
||||
FROM {$serendipity['dbPrefix']}entries AS e
|
||||
JOIN {$serendipity['dbPrefix']}entrycat AS ec
|
||||
ON ec.entryid = e.id
|
||||
JOIN {$serendipity['dbPrefix']}category AS c
|
||||
ON ec.categoryid = c.categoryid");
|
||||
|
||||
foreach($rows AS $row) {
|
||||
serendipity_db_query(
|
||||
sprintf(
|
||||
"REPLACE INTO {$serendipity['dbPrefix']}entrytags (entryid, tag) VALUES (%d, %s)",
|
||||
(int)$row['id'],
|
||||
serendipity_db_escape_string($row['category_name'])
|
||||
)
|
||||
);
|
||||
|
||||
printf(
|
||||
"Category '%s' added as Tag for Entry #%d, '%s'<br />\n",
|
||||
htmlspecialchars($row['category_name']),
|
||||
(int)$row['id'],
|
||||
htmlspecialchars($row['title'])
|
||||
);
|
||||
}
|
||||
?>
|
||||
|
||||
</pre>
|
||||
</p>
|
||||
|
||||
<h1>Historie verzí (ChangeLog)</h1>
|
||||
|
||||
<ul>
|
||||
<li>verze 3.43</li>
|
||||
<ul>
|
||||
<li>Statické opravy pro kompatibilitu freetag<->flattr (žádné chyby PHP5)</li>
|
||||
</ul>
|
||||
<li>verze 3.42</li>
|
||||
<ul>
|
||||
<li>Statické opravy pro generování spartacus</li>
|
||||
</ul>
|
||||
<li>verze 3.41</li>
|
||||
<ul>
|
||||
<li>Deklarace metody install() jako statické</li>
|
||||
</ul>
|
||||
<li>verze 3.39</li>
|
||||
<ul>
|
||||
<li>Přidána specifická kontrola is_array($eventData), díky uživateli [gregman]</li>
|
||||
</ul>
|
||||
<li>verze 3.38</li>
|
||||
<ul>
|
||||
<li>Přidán chybějící fieldset v případě, že není nastavený admin_show_taglist (díky uživateli [gregman])</li>
|
||||
</ul>
|
||||
<li>verze 3.37</li>
|
||||
<ul>
|
||||
<li>Při publikování příspěvku je nahrazení cat2tag provedeno, i když jsou tagy prázdné, takže název kategorie se v tagách objeví vždycky.</li>
|
||||
</ul>
|
||||
<li>verze 3.36</li>
|
||||
<ul>
|
||||
<li>Opraven [tag] v jedné instanci formulářového pole v HTML, díky uživateli [ascger] z diskuzního fóra</li>
|
||||
</ul>
|
||||
<li>verze 3.35</li>
|
||||
<ul>
|
||||
<li>Opraveno - Změna některých instancí [tag] na %5Btag%5D, který je kompatibilní s HTML - bug č.3427291</li>
|
||||
</ul>
|
||||
<li>verze 3.34</li>
|
||||
<ul>
|
||||
<li>Pro mysql použít pouze sql dotaz SHOW.</li>
|
||||
</ul>
|
||||
<li>verze 3.33</li>
|
||||
<ul>
|
||||
<li>Odkazy na https:// místo http://, aby správně fungoval backend na serverech se zapnutým SSL. Díky uživateli [Manko10].</li>
|
||||
</ul>
|
||||
<li>verze 3.30, 3.31, 3.32</li>
|
||||
<ul>
|
||||
<li>Aktualizováno - použitý přiložený tagcloud.swf od WP-Cumulus/Roy Tanck na verzi 1.23.</li>
|
||||
<li>Opraveno - Hrozba HTML injection nahlášená uživatelem [MustLive]</li>
|
||||
<li>Opraveno - Hrozba XSS (Cross Site Scripting) nahlášená uživatelem [Stefan Schurtz]</li>
|
||||
</ul>
|
||||
<li>verze 3.28</li>
|
||||
<ul>
|
||||
<li>Možnost použití konstrukce ?serendipity[tag]=Tag1;Tag2;Tag3</li>
|
||||
</ul>
|
||||
<li>verze 3.27</li>
|
||||
<ul>
|
||||
<li>Správná detekce porovnání (collation) v MySQL databázi</li>
|
||||
</ul>
|
||||
<li>verze 3.26</li>
|
||||
<ul>
|
||||
<li>Přidána kontrola is_array() [Timbalu]</li>
|
||||
</ul>
|
||||
<li>verze 3.25</li>
|
||||
<ul>
|
||||
<li>Oprava kódování databáze</li>
|
||||
</ul>
|
||||
<li>verze 3.24</li>
|
||||
<ul>
|
||||
<li>Přidáno kórování databáze (MySQL), oprava od uživatele [Vincent]</li>
|
||||
</ul>
|
||||
<li>verze 3.23</li>
|
||||
<ul>
|
||||
<li>Přidána oprava zalamování bílých znaků, viz <a href="http://board.s9y.org/viewtopic.php?f=5&t=17760">http://board.s9y.org/viewtopic.php?f=5&t=17760</a></li>
|
||||
</ul>
|
||||
<li>verze 3.22</li>
|
||||
<ul>
|
||||
<li>Ošetřen možný XSS útok (Cross Site Scripting) reportovaný uživatelem [Stefan Schurtz] (SSCHADV2011-004)</li>
|
||||
</ul>
|
||||
<li>verze 3.21</li>
|
||||
<ul>
|
||||
<li>Přidán háček (event hook) "sort" pro plugin serendipity_event_sort (autor [lazybadger])</li>
|
||||
</ul>
|
||||
<li>verze 3.20</li>
|
||||
<ul>
|
||||
<li>Mrak tagů se zobrazuje jako smarty šablona "plugin_freetag.tpl". Pokud si chcete přizpůsobit výstup, zkopírujte tento soubor do adresáře vašeho stylu vzhledu a upravte ho dle sebe.</li>
|
||||
</ul>
|
||||
<li>verze 3.18</li>
|
||||
<ul>
|
||||
<li>Automatická detekce klíčových slov nyní funguje pouze vně html tagů, takže nic jako <a href="..//serendipity/"> nyní nebude detekováno jako klíčové slovo 'serendipity'</li>
|
||||
</ul>
|
||||
<li>verze 3.17</li>
|
||||
<ul>
|
||||
<li>Přidána funkce do administrátorské sekce: vyčištění tagů přiřazených k neexistujícím příspěvkům.</li>
|
||||
<li>Text potvrzovacího tlačítko ve formuláři pro přejmenování tagu už není zadán natvrdo, ale dá se přeložit.</li>
|
||||
<li>Opravena chyba v syntaxi HTML ve formuláři pro přejmenování tagu, a to použitím odpovídající HTML entity.</li>
|
||||
</ul>
|
||||
<li>verze 3.16</li>
|
||||
<ul>
|
||||
<li>Oprava chyby: Klíčová slova (meta-keywords) se nezobrazovala v příspěvcích.</li>
|
||||
</ul>
|
||||
<li>verze 3.15</li>
|
||||
<ul>
|
||||
<li>Odstraněna nesprávná chybová hláška "FATAL ERROR! Unrecognized type for
|
||||
serendipity_event_freetag:: !"
|
||||
<br />(Fatální chyba! Neznámý typ pro serendipity_event_freetag:: !)</li>
|
||||
</ul>
|
||||
<li>verze 3.13, 3.14</li>
|
||||
<ul>
|
||||
<li>Přidáno volání funkce mb_internal_encoding() pro správný převod znaků na malá písmena.</li>
|
||||
</ul>
|
||||
<li>verze 3.12.1</li>
|
||||
<ul>
|
||||
<li>Nahrazeno "wick-based" automatické doplňování jquery pluginem (wick nefungoval v Opeře) </li>
|
||||
</ul>
|
||||
<li>verze 3.11.0</li>
|
||||
<ul>
|
||||
<li>Přidána volba, zda mají být tagy přidány na základě automatického hledání klíčových slov.</li>
|
||||
<li>Opraveny falešné výsledky při změně hledání na regulární výrazy.</li>
|
||||
</ul>
|
||||
<li>verze 3.10.5</li>
|
||||
<ul>
|
||||
<li>Chytání očekávaných chyb v tagcloud query.</li>
|
||||
</ul>
|
||||
<li>verze 3.10.4</li>
|
||||
<ul>
|
||||
<li>Přidána další kontrola na prázdný výsledek pro potlačení chybových hlášek databáze.</li>
|
||||
</ul>
|
||||
<li>verze 3.10.3</li>
|
||||
<ul>
|
||||
<li>Opraveny chybějící tagy v náhledu uloženého příspěvku v přehledu příspěvků.</li>
|
||||
<li>Opraveno připojování výstupu k náhledu v editoru.</li>
|
||||
</ul>
|
||||
<li>verze 3.10.2</li>
|
||||
<ul>
|
||||
<li>Opravena chybná detekce rozšířeného/jednoduchého příspěvku.</li>
|
||||
</ul>
|
||||
<li>verze 3.10</li>
|
||||
<ul>
|
||||
<li>Produkuje podobné články jako nečíslovaný seznam <ul></li>
|
||||
<li>Zanoření o jeden krok níže při prohledávání podobných tagů.</li>
|
||||
<li>"Podobné tagy" je nyní odstavec <p> míst původního bloku <div></li>
|
||||
<li>Zaveden rozšířený Smarty-Markup</li>
|
||||
<li>Vyčištění kódu v displayEntry()</li>
|
||||
</ul>
|
||||
<li>verze 3.09</li>
|
||||
<ul>
|
||||
<li>Opraveno chybějící escapování proměnných v SQL dotazech.</li>
|
||||
</ul>
|
||||
<li>verze 3.08 [Chessnut]</li>
|
||||
<ul>
|
||||
<li>Při prohlížení příspěvků podle tagů nejsou používána omezení kategoriemi (jako například v pluginu startcat)</li>
|
||||
</ul>
|
||||
<li>verze 3.07</li>
|
||||
<ul>
|
||||
<li>Kontrola, že se pole array vytvoří pouze při úspěšném provedení SQL dotazu.</li>
|
||||
</ul>
|
||||
<li>verze 3.06 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Oprava automatického hledání dle klíčových slov i na tagy s velkými písmeny.</li>
|
||||
</ul>
|
||||
<li>verze 3.05 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Používání pouze flash-bg/fg barev, pokud je flash cloud zapnut.</li>
|
||||
</ul>
|
||||
<li>verze 3.04 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Přidána nezdokumentovaná volba pro vložení příbuzných příspěvků do přehledu (<a href="http://board.s9y.org/viewtopic.php?f=10&t=11124&p=83814#p83814">http://board.s9y.org/viewtopic.php?f=10&t=11124&p=83814#p83814</a>)</li>
|
||||
</ul>
|
||||
<li>verze 3.03 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Přidáno escapování databáze při čtení tagů.</li>
|
||||
<li>Opraven duplicitní řetězec LIMIT v SQl dotazu. (Díky uživateli [rupa])</li>
|
||||
</ul>
|
||||
<li>verze 3.01 [designor]</li>
|
||||
<ul>
|
||||
<li>Optimalizace výstupu, použití nejnovějšího SWFObject.</li>
|
||||
</ul>
|
||||
<li>verze 3.0 [lstrojny]</li>
|
||||
<ul>
|
||||
<li>Oprava verze</li>
|
||||
</ul>
|
||||
<li>verze 2.51 [lstrojny]</li>
|
||||
<ul>
|
||||
<li>Opraveno řazení tagů při použití se šablonou.</li>
|
||||
</ul>
|
||||
<li>verze 2.5 [lstrojny]</li>
|
||||
<ul>
|
||||
<li>Přidání možnosti použití Smarty šablony pro vykreslení postranního sloupce.</li>
|
||||
<li>Sjednocení čísel verzí.</li>
|
||||
</ul>
|
||||
<li>verze 2.105 [RobA]</li>
|
||||
<ul>
|
||||
<li>Opravy ve Flashi, omezování počtu tagů, výchozí hodnoty nastavení.</li>
|
||||
</ul>
|
||||
<li>verze 2.103 [RobA]</li>
|
||||
<ul>
|
||||
<li>Přidán rotující Flashový tagcloud (mrak tagů)</li>
|
||||
</ul>
|
||||
<li>verze 2.97 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Možnost umístění tagů do smarty šablony pomocí {$entry.freetag}, pokud je nastaveno použití smarty.</li>
|
||||
</ul>
|
||||
<li>verze 2.96 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Oprava XSS při zobrazování mraku příbuzných tagů, díky [<a href="mailto:Alex@bitsploit.de">Alex@bitsploit.de</a>]</li>
|
||||
</ul>
|
||||
<li>verze 2.95 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Přidán nastavitelný obrázek technorati</li>
|
||||
</ul>
|
||||
<li>verze 2.92/2.45 [brockhaus]</li>
|
||||
<ul>
|
||||
<li>Přidáno nastavení pro XML obrázek</li>
|
||||
</ul>
|
||||
<li>verze 2.88/2.44 [brockhaus]</li>
|
||||
<ul>
|
||||
<li>Přidán volitelný tag technorati za tagy v patičce příspěvku.</li>
|
||||
</ul>
|
||||
<li>verze 2.88/2.43 [brockhaus]</li>
|
||||
<ul>
|
||||
<li>Přidána možnost nastavení minimální/maximální velikosti fontu v postranním sloupci.</li>
|
||||
</ul>
|
||||
<li>verze 2.88/2.42 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Řazení tagů v postranním sloupci bez ohledu na velikost písmen.</li>
|
||||
</ul>
|
||||
<li>verze 2.88/2.41 [brockhaus]</li>
|
||||
<ul>
|
||||
<li>Plugin pro postranní sloupec vždycky načetl prvních X tagů podle jména, ne podle příbuznosti (tagcount, počet tagů). Tedy příbuzné/podobné tagy tagy na konci abecedy se nezobrazovaly.</li>
|
||||
</ul>
|
||||
<li>verze 2.70</li>
|
||||
<ul>
|
||||
<li>Přidána možnost "automatické tagy". To znamená, které tagy přiřadit k příspěvku, pokud jsou v něm nalezena klíčová slova svázaná s tagem.</li>
|
||||
</ul>
|
||||
<li>verze 2.64</li>
|
||||
<ul>
|
||||
<li>Přidána volba pro převod kategorií na tagy.</li>
|
||||
</ul>
|
||||
<li>verze 2.48</li>
|
||||
<ul>
|
||||
<li>Nastavení pro převod na mlá písmena, oprava od [Lars Strojny]</li>
|
||||
</ul>
|
||||
<li>verze 2.47</li>
|
||||
<ul>
|
||||
<li>Lepší zobrazování meta-informací</li>
|
||||
</ul>
|
||||
<li>verze 2.44</li>
|
||||
<ul>
|
||||
<li>Zobrazování podobných příspěvků, oprava od [Stain]</li>
|
||||
<li>Změna místa zobrazování tagů, nyní nastavitelné uživatelem.</li>
|
||||
</ul>
|
||||
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,354 +0,0 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Dokumentace: Freetag</title>
|
||||
<style>
|
||||
pre {
|
||||
display: block;
|
||||
padding: 5px;
|
||||
border: solid 1px #333333;
|
||||
background-color: #cccccc;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Dokumentace k pluginu 'Freetag'<br />
|
||||
<small>(serendipity_event_freetag)</small></h1>
|
||||
|
||||
<p>Dokumentaci k tomuto pluginu přeložil do češtiny Vladimír Ajgl (vlada [zavinac] ajgl [tecka] cz) a naposledy zkontroloval dne 20.4.2013. Od té doby mohl být plugin pozměněn nebo mohly být rozšířené jeho funkce. Zkontrolujte pro jistotu i <a href="../README">aktuální anglické "README"</a>, <a href="../README.txt">"README.txt"</a> a <a href="../ChangeLog">ChangeLog</a>.
|
||||
<p>
|
||||
|
||||
<h2>Popis pluginu</h2>
|
||||
<p>
|
||||
Umožňuje libovolné přidávání klíčových slov k příspěvkům
|
||||
</p>
|
||||
|
||||
<h2>Užitečné skripty</h2>
|
||||
|
||||
<p>Následující kód ukazuje příklad, jak použít rozšířený výstup do smarty šablony. Takto může například vypadat šablona "entries.tpl"
|
||||
<pre>
|
||||
{if isset($entry.freetag.extended) && $entry.freetag.extended == 1}
|
||||
{if $entry.freetag.tags.tags}
|
||||
<div class="serendipity_freeTag">{$entry.freetag.tags.description}
|
||||
{foreach from=$entry.freetag.tags.tags item="tag"}
|
||||
{$tag}
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
{if $is_single_entry or $is_preview}
|
||||
{$entry.freetag.related.description}
|
||||
<ul class="serendipity_freeTag_related">
|
||||
{foreach from=$entry.freetag.related.entries item="link"}
|
||||
<li>{$link}</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
{/if}
|
||||
{else}
|
||||
{$entry.freetag}
|
||||
{/if}
|
||||
</pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Pomocí následujícího sql dotazu můžete v databázi vytvořit tagy z existujících kategorií:
|
||||
<pre>
|
||||
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;
|
||||
</pre>
|
||||
(převzato z <a href="http://pixelated-dreams.com/archives/229-Spring-Cleaning.html">http://pixelated-dreams.com/archives/229-Spring-Cleaning.html</a>)
|
||||
</p>
|
||||
<p>
|
||||
A nebo můžete pro vytvoření tagů z kategorií použít následující skript:
|
||||
<pre>
|
||||
<?php
|
||||
include 'serendipity_config.inc.php';
|
||||
|
||||
$rows = serendipity_db_query("SELECT e.id, e.title, c.category_name
|
||||
FROM {$serendipity['dbPrefix']}entries AS e
|
||||
JOIN {$serendipity['dbPrefix']}entrycat AS ec
|
||||
ON ec.entryid = e.id
|
||||
JOIN {$serendipity['dbPrefix']}category AS c
|
||||
ON ec.categoryid = c.categoryid");
|
||||
|
||||
foreach($rows AS $row) {
|
||||
serendipity_db_query(
|
||||
sprintf(
|
||||
"REPLACE INTO {$serendipity['dbPrefix']}entrytags (entryid, tag) VALUES (%d, %s)",
|
||||
(int)$row['id'],
|
||||
serendipity_db_escape_string($row['category_name'])
|
||||
)
|
||||
);
|
||||
|
||||
printf(
|
||||
"Category '%s' added as Tag for Entry #%d, '%s'<br />\n",
|
||||
htmlspecialchars($row['category_name']),
|
||||
(int)$row['id'],
|
||||
htmlspecialchars($row['title'])
|
||||
);
|
||||
}
|
||||
?>
|
||||
|
||||
</pre>
|
||||
</p>
|
||||
|
||||
<h1>Historie verzí (ChangeLog)</h1>
|
||||
|
||||
<ul>
|
||||
<li>verze 3.43</li>
|
||||
<ul>
|
||||
<li>Statické opravy pro kompatibilitu freetag<->flattr (žádné chyby PHP5)</li>
|
||||
</ul>
|
||||
<li>verze 3.42</li>
|
||||
<ul>
|
||||
<li>Statické opravy pro generování spartacus</li>
|
||||
</ul>
|
||||
<li>verze 3.41</li>
|
||||
<ul>
|
||||
<li>Deklarace metody install() jako statické</li>
|
||||
</ul>
|
||||
<li>verze 3.39</li>
|
||||
<ul>
|
||||
<li>Přidána specifická kontrola is_array($eventData), díky uživateli [gregman]</li>
|
||||
</ul>
|
||||
<li>verze 3.38</li>
|
||||
<ul>
|
||||
<li>Přidán chybějící fieldset v případě, že není nastavený admin_show_taglist (díky uživateli [gregman])</li>
|
||||
</ul>
|
||||
<li>verze 3.37</li>
|
||||
<ul>
|
||||
<li>Při publikování příspěvku je nahrazení cat2tag provedeno, i když jsou tagy prázdné, takže název kategorie se v tagách objeví vždycky.</li>
|
||||
</ul>
|
||||
<li>verze 3.36</li>
|
||||
<ul>
|
||||
<li>Opraven [tag] v jedné instanci formulářového pole v HTML, díky uživateli [ascger] z diskuzního fóra</li>
|
||||
</ul>
|
||||
<li>verze 3.35</li>
|
||||
<ul>
|
||||
<li>Opraveno - Změna některých instancí [tag] na %5Btag%5D, který je kompatibilní s HTML - bug č.3427291</li>
|
||||
</ul>
|
||||
<li>verze 3.34</li>
|
||||
<ul>
|
||||
<li>Pro mysql použít pouze sql dotaz SHOW.</li>
|
||||
</ul>
|
||||
<li>verze 3.33</li>
|
||||
<ul>
|
||||
<li>Odkazy na https:// místo http://, aby správně fungoval backend na serverech se zapnutým SSL. Díky uživateli [Manko10].</li>
|
||||
</ul>
|
||||
<li>verze 3.30, 3.31, 3.32</li>
|
||||
<ul>
|
||||
<li>Aktualizováno - použitý přiložený tagcloud.swf od WP-Cumulus/Roy Tanck na verzi 1.23.</li>
|
||||
<li>Opraveno - Hrozba HTML injection nahlášená uživatelem [MustLive]</li>
|
||||
<li>Opraveno - Hrozba XSS (Cross Site Scripting) nahlášená uživatelem [Stefan Schurtz]</li>
|
||||
</ul>
|
||||
<li>verze 3.28</li>
|
||||
<ul>
|
||||
<li>Možnost použití konstrukce ?serendipity[tag]=Tag1;Tag2;Tag3</li>
|
||||
</ul>
|
||||
<li>verze 3.27</li>
|
||||
<ul>
|
||||
<li>Správná detekce porovnání (collation) v MySQL databázi</li>
|
||||
</ul>
|
||||
<li>verze 3.26</li>
|
||||
<ul>
|
||||
<li>Přidána kontrola is_array() [Timbalu]</li>
|
||||
</ul>
|
||||
<li>verze 3.25</li>
|
||||
<ul>
|
||||
<li>Oprava kódování databáze</li>
|
||||
</ul>
|
||||
<li>verze 3.24</li>
|
||||
<ul>
|
||||
<li>Přidáno kórování databáze (MySQL), oprava od uživatele [Vincent]</li>
|
||||
</ul>
|
||||
<li>verze 3.23</li>
|
||||
<ul>
|
||||
<li>Přidána oprava zalamování bílých znaků, viz <a href="http://board.s9y.org/viewtopic.php?f=5&t=17760">http://board.s9y.org/viewtopic.php?f=5&t=17760</a></li>
|
||||
</ul>
|
||||
<li>verze 3.22</li>
|
||||
<ul>
|
||||
<li>Ošetřen možný XSS útok (Cross Site Scripting) reportovaný uživatelem [Stefan Schurtz] (SSCHADV2011-004)</li>
|
||||
</ul>
|
||||
<li>verze 3.21</li>
|
||||
<ul>
|
||||
<li>Přidán háček (event hook) "sort" pro plugin serendipity_event_sort (autor [lazybadger])</li>
|
||||
</ul>
|
||||
<li>verze 3.20</li>
|
||||
<ul>
|
||||
<li>Mrak tagů se zobrazuje jako smarty šablona "plugin_freetag.tpl". Pokud si chcete přizpůsobit výstup, zkopírujte tento soubor do adresáře vašeho stylu vzhledu a upravte ho dle sebe.</li>
|
||||
</ul>
|
||||
<li>verze 3.18</li>
|
||||
<ul>
|
||||
<li>Automatická detekce klíčových slov nyní funguje pouze vně html tagů, takže nic jako <a href="..//serendipity/"> nyní nebude detekováno jako klíčové slovo 'serendipity'</li>
|
||||
</ul>
|
||||
<li>verze 3.17</li>
|
||||
<ul>
|
||||
<li>Přidána funkce do administrátorské sekce: vyčištění tagů přiřazených k neexistujícím příspěvkům.</li>
|
||||
<li>Text potvrzovacího tlačítko ve formuláři pro přejmenování tagu už není zadán natvrdo, ale dá se přeložit.</li>
|
||||
<li>Opravena chyba v syntaxi HTML ve formuláři pro přejmenování tagu, a to použitím odpovídající HTML entity.</li>
|
||||
</ul>
|
||||
<li>verze 3.16</li>
|
||||
<ul>
|
||||
<li>Oprava chyby: Klíčová slova (meta-keywords) se nezobrazovala v příspěvcích.</li>
|
||||
</ul>
|
||||
<li>verze 3.15</li>
|
||||
<ul>
|
||||
<li>Odstraněna nesprávná chybová hláška "FATAL ERROR! Unrecognized type for
|
||||
serendipity_event_freetag:: !"
|
||||
<br />(Fatální chyba! Neznámý typ pro serendipity_event_freetag:: !)</li>
|
||||
</ul>
|
||||
<li>verze 3.13, 3.14</li>
|
||||
<ul>
|
||||
<li>Přidáno volání funkce mb_internal_encoding() pro správný převod znaků na malá písmena.</li>
|
||||
</ul>
|
||||
<li>verze 3.12.1</li>
|
||||
<ul>
|
||||
<li>Nahrazeno "wick-based" automatické doplňování jquery pluginem (wick nefungoval v Opeře) </li>
|
||||
</ul>
|
||||
<li>verze 3.11.0</li>
|
||||
<ul>
|
||||
<li>Přidána volba, zda mají být tagy přidány na základě automatického hledání klíčových slov.</li>
|
||||
<li>Opraveny falešné výsledky při změně hledání na regulární výrazy.</li>
|
||||
</ul>
|
||||
<li>verze 3.10.5</li>
|
||||
<ul>
|
||||
<li>Chytání očekávaných chyb v tagcloud query.</li>
|
||||
</ul>
|
||||
<li>verze 3.10.4</li>
|
||||
<ul>
|
||||
<li>Přidána další kontrola na prázdný výsledek pro potlačení chybových hlášek databáze.</li>
|
||||
</ul>
|
||||
<li>verze 3.10.3</li>
|
||||
<ul>
|
||||
<li>Opraveny chybějící tagy v náhledu uloženého příspěvku v přehledu příspěvků.</li>
|
||||
<li>Opraveno připojování výstupu k náhledu v editoru.</li>
|
||||
</ul>
|
||||
<li>verze 3.10.2</li>
|
||||
<ul>
|
||||
<li>Opravena chybná detekce rozšířeného/jednoduchého příspěvku.</li>
|
||||
</ul>
|
||||
<li>verze 3.10</li>
|
||||
<ul>
|
||||
<li>Produkuje podobné články jako nečíslovaný seznam <ul></li>
|
||||
<li>Zanoření o jeden krok níže při prohledávání podobných tagů.</li>
|
||||
<li>"Podobné tagy" je nyní odstavec <p> míst původního bloku <div></li>
|
||||
<li>Zaveden rozšířený Smarty-Markup</li>
|
||||
<li>Vyčištění kódu v displayEntry()</li>
|
||||
</ul>
|
||||
<li>verze 3.09</li>
|
||||
<ul>
|
||||
<li>Opraveno chybějící escapování proměnných v SQL dotazech.</li>
|
||||
</ul>
|
||||
<li>verze 3.08 [Chessnut]</li>
|
||||
<ul>
|
||||
<li>Při prohlížení příspěvků podle tagů nejsou používána omezení kategoriemi (jako například v pluginu startcat)</li>
|
||||
</ul>
|
||||
<li>verze 3.07</li>
|
||||
<ul>
|
||||
<li>Kontrola, že se pole array vytvoří pouze při úspěšném provedení SQL dotazu.</li>
|
||||
</ul>
|
||||
<li>verze 3.06 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Oprava automatického hledání dle klíčových slov i na tagy s velkými písmeny.</li>
|
||||
</ul>
|
||||
<li>verze 3.05 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Používání pouze flash-bg/fg barev, pokud je flash cloud zapnut.</li>
|
||||
</ul>
|
||||
<li>verze 3.04 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Přidána nezdokumentovaná volba pro vložení příbuzných příspěvků do přehledu (<a href="http://board.s9y.org/viewtopic.php?f=10&t=11124&p=83814#p83814">http://board.s9y.org/viewtopic.php?f=10&t=11124&p=83814#p83814</a>)</li>
|
||||
</ul>
|
||||
<li>verze 3.03 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Přidáno escapování databáze při čtení tagů.</li>
|
||||
<li>Opraven duplicitní řetězec LIMIT v SQl dotazu. (Díky uživateli [rupa])</li>
|
||||
</ul>
|
||||
<li>verze 3.01 [designor]</li>
|
||||
<ul>
|
||||
<li>Optimalizace výstupu, použití nejnovějšího SWFObject.</li>
|
||||
</ul>
|
||||
<li>verze 3.0 [lstrojny]</li>
|
||||
<ul>
|
||||
<li>Oprava verze</li>
|
||||
</ul>
|
||||
<li>verze 2.51 [lstrojny]</li>
|
||||
<ul>
|
||||
<li>Opraveno řazení tagů při použití se šablonou.</li>
|
||||
</ul>
|
||||
<li>verze 2.5 [lstrojny]</li>
|
||||
<ul>
|
||||
<li>Přidání možnosti použití Smarty šablony pro vykreslení postranního sloupce.</li>
|
||||
<li>Sjednocení čísel verzí.</li>
|
||||
</ul>
|
||||
<li>verze 2.105 [RobA]</li>
|
||||
<ul>
|
||||
<li>Opravy ve Flashi, omezování počtu tagů, výchozí hodnoty nastavení.</li>
|
||||
</ul>
|
||||
<li>verze 2.103 [RobA]</li>
|
||||
<ul>
|
||||
<li>Přidán rotující Flashový tagcloud (mrak tagů)</li>
|
||||
</ul>
|
||||
<li>verze 2.97 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Možnost umístění tagů do smarty šablony pomocí {$entry.freetag}, pokud je nastaveno použití smarty.</li>
|
||||
</ul>
|
||||
<li>verze 2.96 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Oprava XSS při zobrazování mraku příbuzných tagů, díky [<a href="mailto:Alex@bitsploit.de">Alex@bitsploit.de</a>]</li>
|
||||
</ul>
|
||||
<li>verze 2.95 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Přidán nastavitelný obrázek technorati</li>
|
||||
</ul>
|
||||
<li>verze 2.92/2.45 [brockhaus]</li>
|
||||
<ul>
|
||||
<li>Přidáno nastavení pro XML obrázek</li>
|
||||
</ul>
|
||||
<li>verze 2.88/2.44 [brockhaus]</li>
|
||||
<ul>
|
||||
<li>Přidán volitelný tag technorati za tagy v patičce příspěvku.</li>
|
||||
</ul>
|
||||
<li>verze 2.88/2.43 [brockhaus]</li>
|
||||
<ul>
|
||||
<li>Přidána možnost nastavení minimální/maximální velikosti fontu v postranním sloupci.</li>
|
||||
</ul>
|
||||
<li>verze 2.88/2.42 [garvinhicking]</li>
|
||||
<ul>
|
||||
<li>Řazení tagů v postranním sloupci bez ohledu na velikost písmen.</li>
|
||||
</ul>
|
||||
<li>verze 2.88/2.41 [brockhaus]</li>
|
||||
<ul>
|
||||
<li>Plugin pro postranní sloupec vždycky načetl prvních X tagů podle jména, ne podle příbuznosti (tagcount, počet tagů). Tedy příbuzné/podobné tagy tagy na konci abecedy se nezobrazovaly.</li>
|
||||
</ul>
|
||||
<li>verze 2.70</li>
|
||||
<ul>
|
||||
<li>Přidána možnost "automatické tagy". To znamená, které tagy přiřadit k příspěvku, pokud jsou v něm nalezena klíčová slova svázaná s tagem.</li>
|
||||
</ul>
|
||||
<li>verze 2.64</li>
|
||||
<ul>
|
||||
<li>Přidána volba pro převod kategorií na tagy.</li>
|
||||
</ul>
|
||||
<li>verze 2.48</li>
|
||||
<ul>
|
||||
<li>Nastavení pro převod na mlá písmena, oprava od [Lars Strojny]</li>
|
||||
</ul>
|
||||
<li>verze 2.47</li>
|
||||
<ul>
|
||||
<li>Lepší zobrazování meta-informací</li>
|
||||
</ul>
|
||||
<li>verze 2.44</li>
|
||||
<ul>
|
||||
<li>Zobrazování podobných příspěvků, oprava od [Stain]</li>
|
||||
<li>Změna místa zobrazování tagů, nyní nastavitelné uživatelem.</li>
|
||||
</ul>
|
||||
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version
|
||||
|
@ -56,6 +56,9 @@
|
|||
@define('PLUGIN_FREETAG_MAX_TAGS', 'Wieviele Tags sollen angezeigt werden?');
|
||||
@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Wie oft muss ein Tag vorkommen, damit er angezeigt wird?');
|
||||
|
||||
//
|
||||
// later on additions
|
||||
//
|
||||
@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 %');
|
||||
|
||||
|
@ -111,3 +114,9 @@
|
|||
@define('PLUGIN_EVENT_FREETAG_EXTENDED_SMARTY', 'Erweiteres Smarty');
|
||||
@define('PLUGIN_EVENT_FREETAG_EXTENDED_SMARTY_DESC', 'Nutze statt der HTML-Ausgabe, ob nun direkt oder per Smarty, verschiedene Smartyvariablen, die im Template zusammgefügt werden können. Dies überschreibt alle anderen diesbezüglichen Einstellungen. Ein Beispiel für die Nutzung findet sich im Readme.');
|
||||
@define('PLUGIN_EVENT_FREETAG_KILL', 'Wenn aktiviert werden alle zugehörigen Tags gelöscht.');
|
||||
|
||||
@define('PLUGIN_EVENT_FREETAG_TAGLINK_DESC', 'Eine mögliche Änderung des Taglinks wäre "plugin/taglist/" anstelle von "plugin/tag/" zu schreiben. Dies wäre das Kommando, um jeden Taglink als Liste, anstelle von bereits geöffneten Artikeln, auszugeben. Man kann aber ebenso manuell für bestimmte Taglinks den "/taglist" tag an einen bereits existierenden Taglink (zB. "/plugin/tag/deine/tags/taglist") anhängen. In beiden Fällen ist "taglist" fortan ein reserviertes Kommando und kann nicht mehr als normales Tagwort verwendet werden. Für beide Möglichkeiten ist eine eigenhändig eingebaute Code-Änderung nötig, so wie in der Dokumentation für die "tag-as-list" Option beschrieben wird.');
|
||||
|
||||
@define('PLUGIN_EVENT_FREETAG_TAGSASLIST', 'Erlaube "tags-as-list" = ungeöffnete Artikel');
|
||||
@define('PLUGIN_EVENT_FREETAG_TAGSASLIST_DESC', 'In der Plugin-Dokumentation ist zu lesen, wie die existierende templates entries.tpl Datei für die Listenanzeige der Taglink-Ausgabe im Code geändert werden muss.');
|
||||
|
||||
|
|
|
@ -96,10 +96,194 @@ foreach($rows AS $row) {
|
|||
|
||||
</pre>
|
||||
</p>
|
||||
<p> </p>
|
||||
|
||||
<h3>Option: Tags-as-list</h3>
|
||||
|
||||
<p>The following code illustrates on how to change your templates entries.tpl file (all + lines, without '+ '):</p>
|
||||
|
||||
<pre class="prettyprint linenums lang-html " data-pbcklang="html" data-pbcktabsize="4">
|
||||
{serendipity_hookPlugin hook="entries_header" addData="$entry_id"}
|
||||
+ {if $taglist}
|
||||
+ <article id="taglistentries" class="clearfix serendipity_entry">
|
||||
+ <div class="clearfix content serendipity_entry_body">
|
||||
+ <h2>{$head_subtitle}</h2>
|
||||
+ {foreach from=$entries item="dategroup"}
|
||||
+ {foreach from=$dategroup.entries item="entry"}
|
||||
+
|
||||
+ <div class="static-entries-list">
|
||||
+ ({$dategroup.date|date_format:"%d.%m.%Y"}) <a href="{$entry.link}">{$entry.title|default:$entry.id}</a>
|
||||
+ </div>
|
||||
+
|
||||
+ {/foreach}
|
||||
+ {/foreach}
|
||||
+
|
||||
+ </div>
|
||||
+ </article>
|
||||
+
|
||||
+ {else}
|
||||
+
|
||||
{foreach from=$entries item="dategroup"}
|
||||
{foreach from=$dategroup.entries item="entry"}
|
||||
{assign var="entry" value=$entry scope="parent"}
|
||||
<article id="post_{$entry.id}" class="clearfix serendipity_entry{if $dategroup.is_sticky} sticky{/if}">
|
||||
<header class="clearfix">
|
||||
|
||||
<h2><a href="{$entry.link}">{$entry.title}</a></h2>
|
||||
|
||||
<span class="serendipity_byline block_level"><span class="single_user">{$CONST.POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a> {$CONST.ON} </span><time datetime="{$entry.timestamp|@serendipity_html5time}">{$entry.timestamp|@formatTime:$template_option.date_format}</time>{if $entry.is_entry_owner and not $is_preview} | <a href="{$entry.link_edit}">{$CONST.EDIT_ENTRY}</a>{/if}</span>
|
||||
</header>
|
||||
|
||||
<div class="clearfix content serendipity_entry_body">
|
||||
{if $entry.categories}{foreach from=$entry.categories item="entry_category"}{if $entry_category.category_icon}<a href="{$entry_category.category_link}"><img class="serendipity_entryIcon" title="{$entry_category.category_name|@escape}{$entry_category.category_description|@emptyPrefix}" alt="{$entry_category.category_name|@escape}" src="{$entry_category.category_icon}"></a>{/if}{/foreach}{/if}
|
||||
{$entry.body}
|
||||
{if $entry.has_extended and not $is_single_entry and not $entry.is_extended}
|
||||
<a class="read_more block_level" href="{$entry.link}#extended">{$CONST.VIEW_EXTENDED_ENTRY|@sprintf:$entry.title}</a>
|
||||
{/if}
|
||||
</div>
|
||||
{if $entry.is_extended}
|
||||
<div id="extended" class="clearfix content">
|
||||
{$entry.extended}
|
||||
</div>
|
||||
{/if}
|
||||
{if $entry.plugin_display_dat}
|
||||
{$entry.plugin_display_dat}
|
||||
{/if}
|
||||
|
||||
<footer class="clearfix">
|
||||
{if $entry.categories}
|
||||
<span class="visuallyhidden">{$CONST.CATEGORIES}: </span>{foreach from=$entry.categories item="entry_category" name="categories"}<a href="{$entry_category.category_link}">{$entry_category.category_name|@escape}</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}
|
||||
{/if}
|
||||
{if $entry.categories and ($entry.has_comments or $entry.has_disqus)} | {/if}
|
||||
{if ($entry.has_comments or $entry.has_disqus)}
|
||||
{if $entry.has_disqus }
|
||||
{$entry.comments}{if $entry.has_trackbacks}, <a href="{$entry.link}#trackbacks">{$entry.trackbacks} {$entry.label_trackbacks}</a>{/if}
|
||||
{else}
|
||||
<a href="{$entry.link}#comments" title="{$entry.comments} {$entry.label_comments}{if $entry.has_trackbacks}, {$entry.trackbacks} {$entry.label_trackbacks}{/if}">{$entry.comments} {$entry.label_comments}</a>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $entry.url_tweetthis}
|
||||
| <a href="{$entry.url_tweetthis}" title="{$CONST.TWOK11_TWEET_THIS}">Twitter</a>
|
||||
{/if}
|
||||
{if $entry.url_dentthis}
|
||||
| <a href="{$entry.url_dentthis}" title="{$CONST.TWOK11_DENT_THIS}">Identica</a>
|
||||
{/if}
|
||||
{if $entry.url_shorturl}
|
||||
| <a href="{$entry.url_shorturl}" title="{$CONST.TWOK11_SHORT_URL_HINT}" class="short-url">{$CONST.TWOK11_SHORT_URL}</a>
|
||||
{/if}
|
||||
{$entry.add_footer}
|
||||
</footer>
|
||||
|
||||
<!--
|
||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<rdf:Description
|
||||
rdf:about="{$entry.link_rdf}"
|
||||
trackback:ping="{$entry.link_trackback}"
|
||||
dc:title="{$entry.title_rdf|@default:$entry.title}"
|
||||
dc:identifier="{$entry.rdf_ident}" />
|
||||
</rdf:RDF>
|
||||
-->
|
||||
|
||||
{if $is_single_entry and not $is_preview}
|
||||
{if $CONST.DATA_UNSUBSCRIBED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_UNSUBSCRIBED|@sprintf:$CONST.UNSUBSCRIBE_OK}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_TRACKBACK_DELETED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_TRACKBACK_DELETED|@sprintf:$CONST.TRACKBACK_DELETED}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_TRACKBACK_APPROVED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_TRACKBACK_APPROVED|@sprintf:$CONST.TRACKBACK_APPROVED}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_COMMENT_DELETED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_COMMENT_DELETED|@sprintf:$CONST.COMMENT_DELETED}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_COMMENT_APPROVED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_COMMENT_APPROVED|@sprintf:$CONST.COMMENT_APPROVED}</p>
|
||||
{/if}
|
||||
|
||||
<section id="trackbacks" class="serendipity_comments serendipity_section_trackbacks">
|
||||
<h3>{$CONST.TRACKBACKS}</h3>
|
||||
|
||||
<div id="trackback_url" class="block_level"><a rel="nofollow" href="{$entry.link_trackback}" title="{$CONST.TRACKBACK_SPECIFIC_ON_CLICK|@escape}">{$CONST.TRACKBACK_SPECIFIC}</a></div>
|
||||
|
||||
{serendipity_printTrackbacks entry=$entry.id}
|
||||
</section>
|
||||
|
||||
<section id="comments" class="serendipity_comments serendipity_section_comments">
|
||||
<h3>{$CONST.COMMENTS}</h3>
|
||||
|
||||
<p class="manage_comments">{$CONST.DISPLAY_COMMENTS_AS}
|
||||
{if $entry.viewmode eq $CONST.VIEWMODE_LINEAR}
|
||||
{$CONST.COMMENTS_VIEWMODE_LINEAR} | <a href="{$entry.link_viewmode_threaded}#comments" rel="nofollow">{$CONST.COMMENTS_VIEWMODE_THREADED}</a>
|
||||
{else}
|
||||
<a rel="nofollow" href="{$entry.link_viewmode_linear}#comments">{$CONST.COMMENTS_VIEWMODE_LINEAR}</a> | {$CONST.COMMENTS_VIEWMODE_THREADED}
|
||||
{/if}
|
||||
</p>
|
||||
|
||||
{serendipity_printComments entry=$entry.id mode=$entry.viewmode}
|
||||
{if $entry.is_entry_owner}
|
||||
<p class="manage_comments">
|
||||
{if $entry.allow_comments}
|
||||
<a href="{$entry.link_deny_comments}">{$CONST.COMMENTS_DISABLE}</a>
|
||||
{else}
|
||||
<a href="{$entry.link_allow_comments}">{$CONST.COMMENTS_ENABLE}</a>
|
||||
{/if}
|
||||
</p>
|
||||
{/if}
|
||||
</section>
|
||||
<a id="feedback"></a>
|
||||
{foreach from=$comments_messagestack item="message"}
|
||||
<p class="serendipity_msg_important">{$message}</p>
|
||||
{/foreach}
|
||||
{if $is_comment_added}
|
||||
<p class="serendipity_msg_notice">{$CONST.COMMENT_ADDED}</p>
|
||||
{elseif $is_comment_moderate}
|
||||
<p class="serendipity_msg_notice">{$CONST.COMMENT_ADDED}: {$CONST.THIS_COMMENT_NEEDS_REVIEW}</p>
|
||||
{elseif not $entry.allow_comments}
|
||||
<p class="serendipity_msg_important">{$CONST.COMMENTS_CLOSED}</p>
|
||||
{/if}
|
||||
<section id="respond" class="serendipity_section_commentform">
|
||||
<h3>{$CONST.ADD_COMMENT}</h3>
|
||||
{$COMMENTFORM}
|
||||
</section>
|
||||
|
||||
{/if}
|
||||
{$entry.backend_preview}
|
||||
</article>
|
||||
{/foreach}
|
||||
{foreachelse}
|
||||
{if not $plugin_clean_page}
|
||||
<p class="nocontent">{$CONST.NO_ENTRIES_TO_PRINT}</p>
|
||||
{/if}
|
||||
{/foreach}
|
||||
+
|
||||
+ {/if}{* not taglist end *}
|
||||
+
|
||||
{if $footer_info or $footer_prev_page or $footer_next_page}
|
||||
<nav class="serendipity_pagination block_level">
|
||||
<h2 class="visuallyhidden">{$CONST.TWOK11_PAG_TITLE}</h2>
|
||||
|
||||
<ul class="clearfix">
|
||||
{if $footer_info}
|
||||
<li class="info"><span>{$footer_info}</span></li>
|
||||
{/if}
|
||||
<li class="prev">{if $footer_prev_page}<a href="{$footer_prev_page}">{/if}{if $footer_prev_page}&larr; {$CONST.PREVIOUS_PAGE}{else}&nbsp;{/if}{if $footer_prev_page}</a>{/if}</li>
|
||||
<li class="next">{if $footer_next_page}<a href="{$footer_next_page}">{/if}{if $footer_next_page}{$CONST.NEXT_PAGE} &rarr;{else}&nbsp;{/if}{if $footer_next_page}</a>{/if}</li>
|
||||
</ul>
|
||||
</nav>
|
||||
{/if}
|
||||
{serendipity_hookPlugin hook="entries_footer"}
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
|
||||
<h1>Historie verzí (ChangeLog)</h1>
|
||||
|
||||
<ul>
|
||||
<li>Please read more current Changelog!</li>
|
||||
<li>verze 3.43</li>
|
||||
<ul>
|
||||
<li>Statické opravy pro kompatibilitu freetag<->flattr (žádné chyby PHP5)</li>
|
||||
|
|
|
@ -96,10 +96,194 @@ foreach($rows AS $row) {
|
|||
|
||||
</pre>
|
||||
</p>
|
||||
<p> </p>
|
||||
|
||||
<h3>Option: Tags-as-list</h3>
|
||||
|
||||
<p>The following code illustrates on how to change your templates entries.tpl file (all + lines, without '+ '):</p>
|
||||
|
||||
<pre class="prettyprint linenums lang-html " data-pbcklang="html" data-pbcktabsize="4">
|
||||
{serendipity_hookPlugin hook="entries_header" addData="$entry_id"}
|
||||
+ {if $taglist}
|
||||
+ <article id="taglistentries" class="clearfix serendipity_entry">
|
||||
+ <div class="clearfix content serendipity_entry_body">
|
||||
+ <h2>{$head_subtitle}</h2>
|
||||
+ {foreach from=$entries item="dategroup"}
|
||||
+ {foreach from=$dategroup.entries item="entry"}
|
||||
+
|
||||
+ <div class="static-entries-list">
|
||||
+ ({$dategroup.date|date_format:"%d.%m.%Y"}) <a href="{$entry.link}">{$entry.title|default:$entry.id}</a>
|
||||
+ </div>
|
||||
+
|
||||
+ {/foreach}
|
||||
+ {/foreach}
|
||||
+
|
||||
+ </div>
|
||||
+ </article>
|
||||
+
|
||||
+ {else}
|
||||
+
|
||||
{foreach from=$entries item="dategroup"}
|
||||
{foreach from=$dategroup.entries item="entry"}
|
||||
{assign var="entry" value=$entry scope="parent"}
|
||||
<article id="post_{$entry.id}" class="clearfix serendipity_entry{if $dategroup.is_sticky} sticky{/if}">
|
||||
<header class="clearfix">
|
||||
|
||||
<h2><a href="{$entry.link}">{$entry.title}</a></h2>
|
||||
|
||||
<span class="serendipity_byline block_level"><span class="single_user">{$CONST.POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a> {$CONST.ON} </span><time datetime="{$entry.timestamp|@serendipity_html5time}">{$entry.timestamp|@formatTime:$template_option.date_format}</time>{if $entry.is_entry_owner and not $is_preview} | <a href="{$entry.link_edit}">{$CONST.EDIT_ENTRY}</a>{/if}</span>
|
||||
</header>
|
||||
|
||||
<div class="clearfix content serendipity_entry_body">
|
||||
{if $entry.categories}{foreach from=$entry.categories item="entry_category"}{if $entry_category.category_icon}<a href="{$entry_category.category_link}"><img class="serendipity_entryIcon" title="{$entry_category.category_name|@escape}{$entry_category.category_description|@emptyPrefix}" alt="{$entry_category.category_name|@escape}" src="{$entry_category.category_icon}"></a>{/if}{/foreach}{/if}
|
||||
{$entry.body}
|
||||
{if $entry.has_extended and not $is_single_entry and not $entry.is_extended}
|
||||
<a class="read_more block_level" href="{$entry.link}#extended">{$CONST.VIEW_EXTENDED_ENTRY|@sprintf:$entry.title}</a>
|
||||
{/if}
|
||||
</div>
|
||||
{if $entry.is_extended}
|
||||
<div id="extended" class="clearfix content">
|
||||
{$entry.extended}
|
||||
</div>
|
||||
{/if}
|
||||
{if $entry.plugin_display_dat}
|
||||
{$entry.plugin_display_dat}
|
||||
{/if}
|
||||
|
||||
<footer class="clearfix">
|
||||
{if $entry.categories}
|
||||
<span class="visuallyhidden">{$CONST.CATEGORIES}: </span>{foreach from=$entry.categories item="entry_category" name="categories"}<a href="{$entry_category.category_link}">{$entry_category.category_name|@escape}</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}
|
||||
{/if}
|
||||
{if $entry.categories and ($entry.has_comments or $entry.has_disqus)} | {/if}
|
||||
{if ($entry.has_comments or $entry.has_disqus)}
|
||||
{if $entry.has_disqus }
|
||||
{$entry.comments}{if $entry.has_trackbacks}, <a href="{$entry.link}#trackbacks">{$entry.trackbacks} {$entry.label_trackbacks}</a>{/if}
|
||||
{else}
|
||||
<a href="{$entry.link}#comments" title="{$entry.comments} {$entry.label_comments}{if $entry.has_trackbacks}, {$entry.trackbacks} {$entry.label_trackbacks}{/if}">{$entry.comments} {$entry.label_comments}</a>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $entry.url_tweetthis}
|
||||
| <a href="{$entry.url_tweetthis}" title="{$CONST.TWOK11_TWEET_THIS}">Twitter</a>
|
||||
{/if}
|
||||
{if $entry.url_dentthis}
|
||||
| <a href="{$entry.url_dentthis}" title="{$CONST.TWOK11_DENT_THIS}">Identica</a>
|
||||
{/if}
|
||||
{if $entry.url_shorturl}
|
||||
| <a href="{$entry.url_shorturl}" title="{$CONST.TWOK11_SHORT_URL_HINT}" class="short-url">{$CONST.TWOK11_SHORT_URL}</a>
|
||||
{/if}
|
||||
{$entry.add_footer}
|
||||
</footer>
|
||||
|
||||
<!--
|
||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<rdf:Description
|
||||
rdf:about="{$entry.link_rdf}"
|
||||
trackback:ping="{$entry.link_trackback}"
|
||||
dc:title="{$entry.title_rdf|@default:$entry.title}"
|
||||
dc:identifier="{$entry.rdf_ident}" />
|
||||
</rdf:RDF>
|
||||
-->
|
||||
|
||||
{if $is_single_entry and not $is_preview}
|
||||
{if $CONST.DATA_UNSUBSCRIBED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_UNSUBSCRIBED|@sprintf:$CONST.UNSUBSCRIBE_OK}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_TRACKBACK_DELETED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_TRACKBACK_DELETED|@sprintf:$CONST.TRACKBACK_DELETED}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_TRACKBACK_APPROVED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_TRACKBACK_APPROVED|@sprintf:$CONST.TRACKBACK_APPROVED}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_COMMENT_DELETED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_COMMENT_DELETED|@sprintf:$CONST.COMMENT_DELETED}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_COMMENT_APPROVED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_COMMENT_APPROVED|@sprintf:$CONST.COMMENT_APPROVED}</p>
|
||||
{/if}
|
||||
|
||||
<section id="trackbacks" class="serendipity_comments serendipity_section_trackbacks">
|
||||
<h3>{$CONST.TRACKBACKS}</h3>
|
||||
|
||||
<div id="trackback_url" class="block_level"><a rel="nofollow" href="{$entry.link_trackback}" title="{$CONST.TRACKBACK_SPECIFIC_ON_CLICK|@escape}">{$CONST.TRACKBACK_SPECIFIC}</a></div>
|
||||
|
||||
{serendipity_printTrackbacks entry=$entry.id}
|
||||
</section>
|
||||
|
||||
<section id="comments" class="serendipity_comments serendipity_section_comments">
|
||||
<h3>{$CONST.COMMENTS}</h3>
|
||||
|
||||
<p class="manage_comments">{$CONST.DISPLAY_COMMENTS_AS}
|
||||
{if $entry.viewmode eq $CONST.VIEWMODE_LINEAR}
|
||||
{$CONST.COMMENTS_VIEWMODE_LINEAR} | <a href="{$entry.link_viewmode_threaded}#comments" rel="nofollow">{$CONST.COMMENTS_VIEWMODE_THREADED}</a>
|
||||
{else}
|
||||
<a rel="nofollow" href="{$entry.link_viewmode_linear}#comments">{$CONST.COMMENTS_VIEWMODE_LINEAR}</a> | {$CONST.COMMENTS_VIEWMODE_THREADED}
|
||||
{/if}
|
||||
</p>
|
||||
|
||||
{serendipity_printComments entry=$entry.id mode=$entry.viewmode}
|
||||
{if $entry.is_entry_owner}
|
||||
<p class="manage_comments">
|
||||
{if $entry.allow_comments}
|
||||
<a href="{$entry.link_deny_comments}">{$CONST.COMMENTS_DISABLE}</a>
|
||||
{else}
|
||||
<a href="{$entry.link_allow_comments}">{$CONST.COMMENTS_ENABLE}</a>
|
||||
{/if}
|
||||
</p>
|
||||
{/if}
|
||||
</section>
|
||||
<a id="feedback"></a>
|
||||
{foreach from=$comments_messagestack item="message"}
|
||||
<p class="serendipity_msg_important">{$message}</p>
|
||||
{/foreach}
|
||||
{if $is_comment_added}
|
||||
<p class="serendipity_msg_notice">{$CONST.COMMENT_ADDED}</p>
|
||||
{elseif $is_comment_moderate}
|
||||
<p class="serendipity_msg_notice">{$CONST.COMMENT_ADDED}: {$CONST.THIS_COMMENT_NEEDS_REVIEW}</p>
|
||||
{elseif not $entry.allow_comments}
|
||||
<p class="serendipity_msg_important">{$CONST.COMMENTS_CLOSED}</p>
|
||||
{/if}
|
||||
<section id="respond" class="serendipity_section_commentform">
|
||||
<h3>{$CONST.ADD_COMMENT}</h3>
|
||||
{$COMMENTFORM}
|
||||
</section>
|
||||
|
||||
{/if}
|
||||
{$entry.backend_preview}
|
||||
</article>
|
||||
{/foreach}
|
||||
{foreachelse}
|
||||
{if not $plugin_clean_page}
|
||||
<p class="nocontent">{$CONST.NO_ENTRIES_TO_PRINT}</p>
|
||||
{/if}
|
||||
{/foreach}
|
||||
+
|
||||
+ {/if}{* not taglist end *}
|
||||
+
|
||||
{if $footer_info or $footer_prev_page or $footer_next_page}
|
||||
<nav class="serendipity_pagination block_level">
|
||||
<h2 class="visuallyhidden">{$CONST.TWOK11_PAG_TITLE}</h2>
|
||||
|
||||
<ul class="clearfix">
|
||||
{if $footer_info}
|
||||
<li class="info"><span>{$footer_info}</span></li>
|
||||
{/if}
|
||||
<li class="prev">{if $footer_prev_page}<a href="{$footer_prev_page}">{/if}{if $footer_prev_page}&larr; {$CONST.PREVIOUS_PAGE}{else}&nbsp;{/if}{if $footer_prev_page}</a>{/if}</li>
|
||||
<li class="next">{if $footer_next_page}<a href="{$footer_next_page}">{/if}{if $footer_next_page}{$CONST.NEXT_PAGE} &rarr;{else}&nbsp;{/if}{if $footer_next_page}</a>{/if}</li>
|
||||
</ul>
|
||||
</nav>
|
||||
{/if}
|
||||
{serendipity_hookPlugin hook="entries_footer"}
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
|
||||
<h1>Historie verzí (ChangeLog)</h1>
|
||||
|
||||
<ul>
|
||||
<li>Please read more current Changelog!</li>
|
||||
<li>verze 3.43</li>
|
||||
<ul>
|
||||
<li>Statické opravy pro kompatibilitu freetag<->flattr (žádné chyby PHP5)</li>
|
||||
|
|
277
serendipity_event_freetag/documentation_en.html
Normal file
277
serendipity_event_freetag/documentation_en.html
Normal file
|
@ -0,0 +1,277 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Documentation: Freetag</title>
|
||||
<style>
|
||||
pre {
|
||||
display: block;
|
||||
padding: 5px;
|
||||
border: solid 1px #333;
|
||||
background-color: #ddd;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Documentation of the Freetag event plugin<br />
|
||||
<small>(serendipity_event_freetag)</small></h1>
|
||||
|
||||
<p>Documentary added by Ian on 2014-09-27. Informations given in <a href="README">The most current README</a>, <a href="README.txt"> and older README.txt</a> a <a href="ChangeLog">and the most current ChangeLog file</a>.
|
||||
|
||||
<h2>Scripting changes by options</h2>
|
||||
|
||||
<h3>Option: Extendet Smarty</h3>
|
||||
|
||||
<p>When using extended smarty output, the following code illustrates how the smarty-variables could be used when dropped into the entries.tpl:
|
||||
|
||||
<pre class="prettyprint linenums lang-php " data-pbcklang="php" data-pbcktabsize="4">
|
||||
{if isset($entry.freetag.extended) && $entry.freetag.extended == 1}
|
||||
{if $entry.freetag.tags.tags}
|
||||
<div class="serendipity_freeTag">{$entry.freetag.tags.description}
|
||||
{foreach from=$entry.freetag.tags.tags item="tag"}
|
||||
{$tag}
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
{if $is_single_entry or $is_preview}
|
||||
{$entry.freetag.related.description}
|
||||
<ul class="serendipity_freeTag_related">
|
||||
{foreach from=$entry.freetag.related.entries item="link"}
|
||||
<li>{$link}</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/if}
|
||||
{/if}
|
||||
{else}
|
||||
{$entry.freetag}
|
||||
{/if}
|
||||
</pre>
|
||||
|
||||
<h3>Using this subquery you can convert existing categories to tags:</h3>
|
||||
|
||||
<pre class="prettyprint linenums lang-sql " data-pbcklang="sql" data-pbcktabsize="4">
|
||||
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;
|
||||
</pre>
|
||||
|
||||
<p>[quoted from: http://pixelated-dreams.com/archives/229-Spring-Cleaning.html]</p>
|
||||
|
||||
<h3>Or using this script you can convert existing categories to tags:</h3>
|
||||
|
||||
<pre class="prettyprint linenums lang-php " data-pbcklang="php" data-pbcktabsize="4">
|
||||
<?php
|
||||
include 'serendipity_config.inc.php';
|
||||
|
||||
$rows = serendipity_db_query("SELECT e.id, e.title, c.category_name
|
||||
FROM {$serendipity['dbPrefix']}entries AS e
|
||||
JOIN {$serendipity['dbPrefix']}entrycat AS ec
|
||||
ON ec.entryid = e.id
|
||||
JOIN {$serendipity['dbPrefix']}category AS c
|
||||
ON ec.categoryid = c.categoryid");
|
||||
|
||||
foreach($rows AS $row) {
|
||||
serendipity_db_query(
|
||||
sprintf(
|
||||
"REPLACE INTO {$serendipity['dbPrefix']}entrytags (entryid, tag) VALUES (%d, %s)",
|
||||
(int)$row['id'],
|
||||
serendipity_db_escape_string($row['category_name'])
|
||||
)
|
||||
);
|
||||
|
||||
printf(
|
||||
"Category '%s' added as Tag for Entry #%d, '%s'<br />\n",
|
||||
htmlspecialchars($row['category_name']),
|
||||
(int)$row['id'],
|
||||
htmlspecialchars($row['title'])
|
||||
);
|
||||
}</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<h3>Option: Tags-as-list</h3>
|
||||
|
||||
<p>The following code illustrates on how to change your templates entries.tpl file (all + lines, without '+ '):</p>
|
||||
|
||||
<pre class="prettyprint linenums lang-html " data-pbcklang="html" data-pbcktabsize="4">
|
||||
{serendipity_hookPlugin hook="entries_header" addData="$entry_id"}
|
||||
+ {if $taglist}
|
||||
+ <article id="taglistentries" class="clearfix serendipity_entry">
|
||||
+ <div class="clearfix content serendipity_entry_body">
|
||||
+ <h2>{$head_subtitle}</h2>
|
||||
+ {foreach from=$entries item="dategroup"}
|
||||
+ {foreach from=$dategroup.entries item="entry"}
|
||||
+
|
||||
+ <div class="static-entries-list">
|
||||
+ ({$dategroup.date|date_format:"%d.%m.%Y"}) <a href="{$entry.link}">{$entry.title|default:$entry.id}</a>
|
||||
+ </div>
|
||||
+
|
||||
+ {/foreach}
|
||||
+ {/foreach}
|
||||
+
|
||||
+ </div>
|
||||
+ </article>
|
||||
+
|
||||
+ {else}
|
||||
+
|
||||
{foreach from=$entries item="dategroup"}
|
||||
{foreach from=$dategroup.entries item="entry"}
|
||||
{assign var="entry" value=$entry scope="parent"}
|
||||
<article id="post_{$entry.id}" class="clearfix serendipity_entry{if $dategroup.is_sticky} sticky{/if}">
|
||||
<header class="clearfix">
|
||||
|
||||
<h2><a href="{$entry.link}">{$entry.title}</a></h2>
|
||||
|
||||
<span class="serendipity_byline block_level"><span class="single_user">{$CONST.POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a> {$CONST.ON} </span><time datetime="{$entry.timestamp|@serendipity_html5time}">{$entry.timestamp|@formatTime:$template_option.date_format}</time>{if $entry.is_entry_owner and not $is_preview} | <a href="{$entry.link_edit}">{$CONST.EDIT_ENTRY}</a>{/if}</span>
|
||||
</header>
|
||||
|
||||
<div class="clearfix content serendipity_entry_body">
|
||||
{if $entry.categories}{foreach from=$entry.categories item="entry_category"}{if $entry_category.category_icon}<a href="{$entry_category.category_link}"><img class="serendipity_entryIcon" title="{$entry_category.category_name|@escape}{$entry_category.category_description|@emptyPrefix}" alt="{$entry_category.category_name|@escape}" src="{$entry_category.category_icon}"></a>{/if}{/foreach}{/if}
|
||||
{$entry.body}
|
||||
{if $entry.has_extended and not $is_single_entry and not $entry.is_extended}
|
||||
<a class="read_more block_level" href="{$entry.link}#extended">{$CONST.VIEW_EXTENDED_ENTRY|@sprintf:$entry.title}</a>
|
||||
{/if}
|
||||
</div>
|
||||
{if $entry.is_extended}
|
||||
<div id="extended" class="clearfix content">
|
||||
{$entry.extended}
|
||||
</div>
|
||||
{/if}
|
||||
{if $entry.plugin_display_dat}
|
||||
{$entry.plugin_display_dat}
|
||||
{/if}
|
||||
|
||||
<footer class="clearfix">
|
||||
{if $entry.categories}
|
||||
<span class="visuallyhidden">{$CONST.CATEGORIES}: </span>{foreach from=$entry.categories item="entry_category" name="categories"}<a href="{$entry_category.category_link}">{$entry_category.category_name|@escape}</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}
|
||||
{/if}
|
||||
{if $entry.categories and ($entry.has_comments or $entry.has_disqus)} | {/if}
|
||||
{if ($entry.has_comments or $entry.has_disqus)}
|
||||
{if $entry.has_disqus }
|
||||
{$entry.comments}{if $entry.has_trackbacks}, <a href="{$entry.link}#trackbacks">{$entry.trackbacks} {$entry.label_trackbacks}</a>{/if}
|
||||
{else}
|
||||
<a href="{$entry.link}#comments" title="{$entry.comments} {$entry.label_comments}{if $entry.has_trackbacks}, {$entry.trackbacks} {$entry.label_trackbacks}{/if}">{$entry.comments} {$entry.label_comments}</a>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $entry.url_tweetthis}
|
||||
| <a href="{$entry.url_tweetthis}" title="{$CONST.TWOK11_TWEET_THIS}">Twitter</a>
|
||||
{/if}
|
||||
{if $entry.url_dentthis}
|
||||
| <a href="{$entry.url_dentthis}" title="{$CONST.TWOK11_DENT_THIS}">Identica</a>
|
||||
{/if}
|
||||
{if $entry.url_shorturl}
|
||||
| <a href="{$entry.url_shorturl}" title="{$CONST.TWOK11_SHORT_URL_HINT}" class="short-url">{$CONST.TWOK11_SHORT_URL}</a>
|
||||
{/if}
|
||||
{$entry.add_footer}
|
||||
</footer>
|
||||
|
||||
<!--
|
||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<rdf:Description
|
||||
rdf:about="{$entry.link_rdf}"
|
||||
trackback:ping="{$entry.link_trackback}"
|
||||
dc:title="{$entry.title_rdf|@default:$entry.title}"
|
||||
dc:identifier="{$entry.rdf_ident}" />
|
||||
</rdf:RDF>
|
||||
-->
|
||||
|
||||
{if $is_single_entry and not $is_preview}
|
||||
{if $CONST.DATA_UNSUBSCRIBED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_UNSUBSCRIBED|@sprintf:$CONST.UNSUBSCRIBE_OK}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_TRACKBACK_DELETED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_TRACKBACK_DELETED|@sprintf:$CONST.TRACKBACK_DELETED}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_TRACKBACK_APPROVED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_TRACKBACK_APPROVED|@sprintf:$CONST.TRACKBACK_APPROVED}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_COMMENT_DELETED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_COMMENT_DELETED|@sprintf:$CONST.COMMENT_DELETED}</p>
|
||||
{/if}
|
||||
{if $CONST.DATA_COMMENT_APPROVED}
|
||||
<p class="serendipity_msg_notice">{$CONST.DATA_COMMENT_APPROVED|@sprintf:$CONST.COMMENT_APPROVED}</p>
|
||||
{/if}
|
||||
|
||||
<section id="trackbacks" class="serendipity_comments serendipity_section_trackbacks">
|
||||
<h3>{$CONST.TRACKBACKS}</h3>
|
||||
|
||||
<div id="trackback_url" class="block_level"><a rel="nofollow" href="{$entry.link_trackback}" title="{$CONST.TRACKBACK_SPECIFIC_ON_CLICK|@escape}">{$CONST.TRACKBACK_SPECIFIC}</a></div>
|
||||
|
||||
{serendipity_printTrackbacks entry=$entry.id}
|
||||
</section>
|
||||
|
||||
<section id="comments" class="serendipity_comments serendipity_section_comments">
|
||||
<h3>{$CONST.COMMENTS}</h3>
|
||||
|
||||
<p class="manage_comments">{$CONST.DISPLAY_COMMENTS_AS}
|
||||
{if $entry.viewmode eq $CONST.VIEWMODE_LINEAR}
|
||||
{$CONST.COMMENTS_VIEWMODE_LINEAR} | <a href="{$entry.link_viewmode_threaded}#comments" rel="nofollow">{$CONST.COMMENTS_VIEWMODE_THREADED}</a>
|
||||
{else}
|
||||
<a rel="nofollow" href="{$entry.link_viewmode_linear}#comments">{$CONST.COMMENTS_VIEWMODE_LINEAR}</a> | {$CONST.COMMENTS_VIEWMODE_THREADED}
|
||||
{/if}
|
||||
</p>
|
||||
|
||||
{serendipity_printComments entry=$entry.id mode=$entry.viewmode}
|
||||
{if $entry.is_entry_owner}
|
||||
<p class="manage_comments">
|
||||
{if $entry.allow_comments}
|
||||
<a href="{$entry.link_deny_comments}">{$CONST.COMMENTS_DISABLE}</a>
|
||||
{else}
|
||||
<a href="{$entry.link_allow_comments}">{$CONST.COMMENTS_ENABLE}</a>
|
||||
{/if}
|
||||
</p>
|
||||
{/if}
|
||||
</section>
|
||||
<a id="feedback"></a>
|
||||
{foreach from=$comments_messagestack item="message"}
|
||||
<p class="serendipity_msg_important">{$message}</p>
|
||||
{/foreach}
|
||||
{if $is_comment_added}
|
||||
<p class="serendipity_msg_notice">{$CONST.COMMENT_ADDED}</p>
|
||||
{elseif $is_comment_moderate}
|
||||
<p class="serendipity_msg_notice">{$CONST.COMMENT_ADDED}: {$CONST.THIS_COMMENT_NEEDS_REVIEW}</p>
|
||||
{elseif not $entry.allow_comments}
|
||||
<p class="serendipity_msg_important">{$CONST.COMMENTS_CLOSED}</p>
|
||||
{/if}
|
||||
<section id="respond" class="serendipity_section_commentform">
|
||||
<h3>{$CONST.ADD_COMMENT}</h3>
|
||||
{$COMMENTFORM}
|
||||
</section>
|
||||
|
||||
{/if}
|
||||
{$entry.backend_preview}
|
||||
</article>
|
||||
{/foreach}
|
||||
{foreachelse}
|
||||
{if not $plugin_clean_page}
|
||||
<p class="nocontent">{$CONST.NO_ENTRIES_TO_PRINT}</p>
|
||||
{/if}
|
||||
{/foreach}
|
||||
+
|
||||
+ {/if}{* not taglist end *}
|
||||
+
|
||||
{if $footer_info or $footer_prev_page or $footer_next_page}
|
||||
<nav class="serendipity_pagination block_level">
|
||||
<h2 class="visuallyhidden">{$CONST.TWOK11_PAG_TITLE}</h2>
|
||||
|
||||
<ul class="clearfix">
|
||||
{if $footer_info}
|
||||
<li class="info"><span>{$footer_info}</span></li>
|
||||
{/if}
|
||||
<li class="prev">{if $footer_prev_page}<a href="{$footer_prev_page}">{/if}{if $footer_prev_page}&larr; {$CONST.PREVIOUS_PAGE}{else}&nbsp;{/if}{if $footer_prev_page}</a>{/if}</li>
|
||||
<li class="next">{if $footer_next_page}<a href="{$footer_next_page}">{/if}{if $footer_next_page}{$CONST.NEXT_PAGE} &rarr;{else}&nbsp;{/if}{if $footer_next_page}</a>{/if}</li>
|
||||
</ul>
|
||||
</nav>
|
||||
{/if}
|
||||
{serendipity_hookPlugin hook="entries_footer"}
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version
|
||||
|
@ -56,6 +56,9 @@
|
|||
@define('PLUGIN_FREETAG_MAX_TAGS', 'Wieviele Tags sollen angezeigt werden?');
|
||||
@define('PLUGIN_FREETAG_TRESHOLD_TAG_COUNT', 'Wie oft muss ein Tag vorkommen, damit er angezeigt wird?');
|
||||
|
||||
//
|
||||
// later on additions
|
||||
//
|
||||
@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 %');
|
||||
|
||||
|
@ -112,4 +115,10 @@
|
|||
|
||||
@define('PLUGIN_EVENT_FREETAG_EXTENDED_SMARTY', 'Erweiteres Smarty');
|
||||
@define('PLUGIN_EVENT_FREETAG_EXTENDED_SMARTY_DESC', 'Nutze statt der HTML-Ausgabe, ob nun direkt oder per Smarty, verschiedene Smartyvariablen, die im Template zusammgefügt werden können. Dies überschreibt alle anderen diesbezüglichen Einstellungen. Ein Beispiel für die Nutzung findet sich im Readme.');
|
||||
@define('PLUGIN_EVENT_FREETAG_KILL', 'Wenn aktiviert werden alle zugehörigen Tags gelöscht.');
|
||||
@define('PLUGIN_EVENT_FREETAG_KILL', 'Wenn aktiviert werden alle zugehörigen Tags gelöscht.');
|
||||
|
||||
@define('PLUGIN_EVENT_FREETAG_TAGLINK_DESC', 'Eine mögliche Änderung des Taglinks wäre "plugin/taglist/" anstelle von "plugin/tag/" zu schreiben. Dies wäre das Kommando, um jeden Taglink als Liste, anstelle von bereits geöffneten Artikeln, auszugeben. Man kann aber ebenso manuell für bestimmte Taglinks den "/taglist" tag an einen bereits existierenden Taglink (zB. "/plugin/tag/deine/tags/taglist") anhängen. In beiden Fällen ist "taglist" fortan ein reserviertes Kommando und kann nicht mehr als normales Tagwort verwendet werden. Für beide Möglichkeiten ist eine eigenhändig eingebaute Code-Änderung nötig, so wie in der Dokumentation für die "tag-as-list" Option beschrieben wird.');
|
||||
|
||||
@define('PLUGIN_EVENT_FREETAG_TAGSASLIST', 'Erlaube "tags-as-list" = ungeöffnete Artikel');
|
||||
@define('PLUGIN_EVENT_FREETAG_TAGSASLIST_DESC', 'In der Plugin-Dokumentation ist zu lesen, wie die existierende templates entries.tpl Datei für die Listenanzeige der Taglink-Ausgabe im Code geändert werden muss.');
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version
|
||||
|
@ -56,6 +56,9 @@
|
|||
@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?');
|
||||
|
||||
//
|
||||
// later on additions
|
||||
//
|
||||
@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');
|
||||
|
||||
|
@ -115,3 +118,9 @@
|
|||
|
||||
@define('PLUGIN_EVENT_FREETAG_COLLATION', '(MySQL) Database collation for the entrytags.tag column (auto-detected)');
|
||||
@define('PLUGIN_EVENT_FREETAG_KILL', 'When checked, all assigned tags to this entry will be removed.');
|
||||
|
||||
@define('PLUGIN_EVENT_FREETAG_TAGLINK_DESC', 'A possible change in your taglink, is to write "plugin/taglist/" instead of "plugin/tag/". This will make your tag(s) appear as as clickable list, instead of already opened entries. You can also add this manually to certain taglinks in the frontend or append a "/taglist" tag to an already existing path (eg "/plugin/tag/your/tags/append/taglist"). In both cases "taglist" is a reserved word from now on and can not be used as a normal tag elsewhere anymore. If you want to use this, please enable next option and add some code manually, described in the documentary for the "tag-as-list" option.');
|
||||
|
||||
@define('PLUGIN_EVENT_FREETAG_TAGSASLIST', 'Enable "tags-as-list" = non-opened entries');
|
||||
@define('PLUGIN_EVENT_FREETAG_TAGSASLIST_DESC', 'Please read the documentary in this plugins "Local Documentation" on how to add the smarty taglist code to your existing templates entries.tpl file.');
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
/*
|
||||
* ULTRA HIGH PRIORITY
|
||||
* - get some kind of data-sharing protocol in action. It is very difficult
|
||||
|
@ -66,13 +66,13 @@ class serendipity_event_freetag extends serendipity_event
|
|||
$propbag->add('name', PLUGIN_EVENT_FREETAG_TITLE);
|
||||
$propbag->add('description', PLUGIN_EVENT_FREETAG_DESC);
|
||||
$propbag->add('stackable', false);
|
||||
$propbag->add('author', 'Garvin Hicking, Jonathan Arkell, Grischa Brockhaus, Lars Strojny, Malte Paskuda');
|
||||
$propbag->add('author', 'Garvin Hicking, Jonathan Arkell, Grischa Brockhaus, Lars Strojny, Malte Paskuda, Ian');
|
||||
$propbag->add('requirements', array(
|
||||
'serendipity' => '0.8',
|
||||
'smarty' => '2.6.7',
|
||||
'php' => '4.1.0'
|
||||
));
|
||||
$propbag->add('version', '3.57');
|
||||
$propbag->add('version', '3.58');
|
||||
$propbag->add('event_hooks', array(
|
||||
'frontend_fetchentries' => true,
|
||||
'frontend_fetchentry' => true,
|
||||
|
@ -103,7 +103,7 @@ class serendipity_event_freetag extends serendipity_event
|
|||
$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', 'keyword2tag', 'taglink', 'embed_footer', 'extended_smarty', 'show_tagcloud', 'min_percent', 'max_percent', 'max_tags', 'use_flash', 'flash_tag_color', 'flash_bg_trans', 'flash_bg_color', 'flash_width', 'flash_speed', 'meta_keywords', 'show_related', 'show_related_count', 'lowercase_tags', 'collation', 'send_http_header', 'admin_show_taglist', 'admin_ftayt', 'technorati_tag_link', 'technorati_tag_image'));
|
||||
$propbag->add('configuration', array('cat2tag', 'keyword2tag', 'taglink', 'taglist', 'embed_footer', 'extended_smarty', 'show_tagcloud', 'min_percent', 'max_percent', 'max_tags', 'use_flash', 'flash_tag_color', 'flash_bg_trans', 'flash_bg_color', 'flash_width', 'flash_speed', 'meta_keywords', 'show_related', 'show_related_count', 'lowercase_tags', 'collation', 'send_http_header', 'admin_show_taglist', 'admin_ftayt', 'technorati_tag_link', 'technorati_tag_image'));
|
||||
}
|
||||
|
||||
function introspect_config_item($name, &$propbag) {
|
||||
|
@ -149,10 +149,17 @@ class serendipity_event_freetag extends serendipity_event
|
|||
$propbag->add('default', false);
|
||||
break;
|
||||
|
||||
case 'taglist':
|
||||
$propbag->add('type', 'boolean');
|
||||
$propbag->add('name', PLUGIN_EVENT_FREETAG_TAGSASLIST);
|
||||
$propbag->add('description', PLUGIN_EVENT_FREETAG_TAGSASLIST_DESC);
|
||||
$propbag->add('default', false);
|
||||
break;
|
||||
|
||||
case 'taglink':
|
||||
$propbag->add('type', 'string');
|
||||
$propbag->add('name', PLUGIN_EVENT_FREETAG_TAGLINK);
|
||||
$propbag->add('description', '');
|
||||
$propbag->add('description', PLUGIN_EVENT_FREETAG_TAGLINK_DESC);
|
||||
$propbag->add('default', $serendipity['baseURL'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/tag/');
|
||||
break;
|
||||
|
||||
|
@ -312,7 +319,7 @@ class serendipity_event_freetag extends serendipity_event
|
|||
static function upgradeFromVersion1() {
|
||||
global $serendipity;
|
||||
|
||||
$q = "select count(*) from {$serendipity['dbPrefix']}entryproperties where property = 'ep_freetag_name'";
|
||||
$q = "SELECT count(*) FROM {$serendipity['dbPrefix']}entryproperties WHERE property = 'ep_freetag_name'";
|
||||
$result = serendipity_db_query($q);
|
||||
|
||||
if ((int)$result[0] > 0) {
|
||||
|
@ -325,7 +332,7 @@ class serendipity_event_freetag extends serendipity_event
|
|||
static function convertEntryPropertiesTags() {
|
||||
global $serendipity;
|
||||
|
||||
$q = "select entryid, value from {$serendipity['dbPrefix']}entryproperties where property = 'ep_freetag_name'";
|
||||
$q = "SELECT entryid, value FROM {$serendipity['dbPrefix']}entryproperties WHERE property = 'ep_freetag_name'";
|
||||
$result = serendipity_db_query($q);
|
||||
|
||||
if (!is_array($result)) {
|
||||
|
@ -340,7 +347,7 @@ class serendipity_event_freetag extends serendipity_event
|
|||
echo '<BR/>';
|
||||
}
|
||||
|
||||
$q = "delete from {$serendipity['dbPrefix']}entryproperties where property = 'ep_freetag_name'";
|
||||
$q = "DELETE FROM {$serendipity['dbPrefix']}entryproperties WHERE property = 'ep_freetag_name'";
|
||||
$result = serendipity_db_query($q);
|
||||
}
|
||||
|
||||
|
@ -358,7 +365,7 @@ class serendipity_event_freetag extends serendipity_event
|
|||
global $serendipity;
|
||||
|
||||
if (!serendipity_event_freetag::tableCreated('entrytags')) {
|
||||
$q = "create table {$serendipity['dbPrefix']}entrytags (" .
|
||||
$q = "CREATE TABLE {$serendipity['dbPrefix']}entrytags (" .
|
||||
"entryid int(10) not null, " .
|
||||
"tag varchar(50) not null, " .
|
||||
"primary key (entryid, tag)" .
|
||||
|
@ -375,7 +382,7 @@ class serendipity_event_freetag extends serendipity_event
|
|||
}
|
||||
|
||||
if (!serendipity_event_freetag::tableCreated('tagkeywords')) {
|
||||
$q = "create table {$serendipity['dbPrefix']}tagkeywords (" .
|
||||
$q = "CREATE TABLE {$serendipity['dbPrefix']}tagkeywords (" .
|
||||
"keywords text, " .
|
||||
"tag varchar(50) not null, " .
|
||||
"primary key (tag)" .
|
||||
|
@ -440,7 +447,6 @@ class serendipity_event_freetag extends serendipity_event
|
|||
$technorati_img = $this->get_config('technorati_tag_image');
|
||||
$img_url = $this->get_config('path_img',$serendipity['serendipityHTTPPath'] . 'plugins/serendipity_event_freetag/img/');
|
||||
|
||||
|
||||
foreach($tags as $tag) {
|
||||
$tag = trim($tag);
|
||||
if (empty($tag)) {
|
||||
|
@ -696,10 +702,41 @@ class serendipity_event_freetag extends serendipity_event
|
|||
|
||||
case 'external_plugin':
|
||||
$uri_parts = explode('?', str_replace(array('&', '%FF'), array('&', '.'), $eventData));
|
||||
$param = explode('/', $uri_parts[0]);
|
||||
$param = $taglist ? explode('/', str_replace('/taglist','',$uri_parts[0])) : explode('/', $uri_parts[0]);
|
||||
$plugincode = array_shift($param);
|
||||
$taglist = serendipity_db_bool($this->get_config('taglist', false));
|
||||
$tagged_as_list = false;
|
||||
|
||||
// By option or manually added blogdomain.com/plugin/taglist/Serendipity/Blog/Plums - see below
|
||||
if ($plugincode == "taglist") $plugincode = "tags";
|
||||
|
||||
if (($plugincode == "tag") || ($plugincode == "tags") || ($plugincode == "freetag")) {
|
||||
|
||||
// Manually added (last) parameter 'taglist" to view tags by list for certain taglinks eg. blogdomain.com/plugin/tag/Serendipity/Blog/Plums/taglist - both need a modified entries.tpl
|
||||
if ($taglist && in_array('taglist', $serendipity['uriArguments'])) {
|
||||
$param = array_map('urldecode', $param);
|
||||
$param = array_map('urldecode', $param); // for doubled encoded tag umlauts via searchengines backlinks
|
||||
$param = is_array($param) ? array_map('strip_tags', $param) : strip_tags($param);
|
||||
$param = array_filter($param); // empty removed XSS by strip_tags
|
||||
|
||||
if (!is_object($serendipity['smarty'])) {
|
||||
serendipity_smarty_init(); // to avoid member function assign() on a non-object error, start Smarty templating
|
||||
}
|
||||
if (false === serendipity_db_bool($this->get_config('show_tagcloud', true))) {
|
||||
// Since this is extra stuff, we need to regular assign the subtitle header and not use $serendipity['head_subtitle'] !
|
||||
if (count($param) > 1) {
|
||||
$serendipity['smarty']->assign('head_subtitle', sprintf(PLUGIN_EVENT_FREETAG_USING, implode(' + ', array_map('htmlspecialchars', $param))));
|
||||
} else {
|
||||
$serendipity['smarty']->assign('head_subtitle', sprintf(PLUGIN_EVENT_FREETAG_USING, htmlspecialchars($param[0])));
|
||||
}
|
||||
}
|
||||
$serendipity['smarty']->assign('taglist', true);
|
||||
foreach($serendipity['uriArguments'] AS $uak => $uav) {
|
||||
if ($uav == 'taglist') unset($serendipity['uriArguments'][$uak]);
|
||||
}
|
||||
$tagged_as_list = true;
|
||||
}
|
||||
|
||||
/* Attempt to locate hidden variables within the URI */
|
||||
foreach ($serendipity['uriArguments'] as $k => $v) {
|
||||
if ($v[0] == 'P') { /* Page */
|
||||
|
@ -720,13 +757,27 @@ class serendipity_event_freetag extends serendipity_event
|
|||
$param = null;
|
||||
} else if (count($param) == 1) {
|
||||
$param = urldecode($param[0]);
|
||||
$param = urldecode($param); // for doubled encoded tag umlauts via searchengines backlinks
|
||||
$param = strip_tags($param);
|
||||
$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)));
|
||||
if (!$tagged_as_list) {
|
||||
$param = array_map('urldecode', $param);
|
||||
$param = array_map('urldecode', $param); // for doubled encoded tag umlauts via searchengines backlinks in sprintf
|
||||
}
|
||||
$param = array_map('strip_tags', $param);
|
||||
$param = array_filter($param); // empty removed XSS by strip_tags
|
||||
$serendipity['head_subtitle'] = sprintf(PLUGIN_EVENT_FREETAG_USING, implode(' + ', array_map('htmlspecialchars', $param)));
|
||||
$emit_404 = true;
|
||||
}
|
||||
// for XSS secureness, while using doubled decode
|
||||
$param = is_array($param) ? array_map('strip_tags', $param) : strip_tags($param);
|
||||
if (is_array($param)) {
|
||||
array_filter($param); // empty removed XSS by strip_tags
|
||||
}
|
||||
$param = is_array($param) ? array_map('htmlspecialchars', $param) : htmlspecialchars($param);
|
||||
|
||||
$this->tags['show'] = $param;
|
||||
$serendipity['plugin_vars']['tag'] = $param;
|
||||
if (is_array($param)) {
|
||||
|
@ -760,7 +811,7 @@ class serendipity_event_freetag extends serendipity_event
|
|||
break;
|
||||
|
||||
case 'backend_sidebar_entries':
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
?>
|
||||
<li class="serendipitySideBarMenuLink serendipitySideBarMenuEntryLinks"><a href="?serendipity[adminModule]=event_display&serendipity[adminAction]=managetags"><?php echo PLUGIN_EVENT_FREETAG_MANAGETAGS; ?></a></li>
|
||||
<?php
|
||||
|
@ -929,13 +980,13 @@ addLoadEvent(enableAutocomplete);
|
|||
}
|
||||
// jQuery Migrate is used due to $.browser of autocomplete plugin not being available in jquery 1.9+
|
||||
echo '
|
||||
' . ($serendipity['version'][0] == 1 ? '<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>' : '') . '
|
||||
' . ($serendipity['version'][0] < 2 ? '<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>' : '') . '
|
||||
<link rel="stylesheet" type="text/css" href="' . $serendipity['baseURL'] . 'plugins/serendipity_event_freetag/jquery.autocomplete.css" />
|
||||
<script src="https://code.jquery.com/jquery-migrate-1.1.1.js"></script>
|
||||
<script type="text/javascript" src="' . $serendipity['baseURL'] . 'plugins/serendipity_event_freetag/jquery.autocomplete.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var tags = [' . implode(',', $wicktags) . '];
|
||||
' . ($serendipity['version'][0] == 1 ? '
|
||||
' . ($serendipity['version'][0] < 2 ? '
|
||||
function enableAutocomplete() {
|
||||
$("#properties_freetag_tagList").autocomplete(tags, {
|
||||
minChars: 0,
|
||||
|
@ -981,7 +1032,7 @@ addLoadEvent(enableAutocomplete);
|
|||
}
|
||||
</script>
|
||||
<?php
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
?>
|
||||
<fieldset style="margin: 5px">
|
||||
<a name="tagListAnchor"></a>
|
||||
|
@ -1003,7 +1054,7 @@ addLoadEvent(enableAutocomplete);
|
|||
}
|
||||
if ($upc != $lastletter)
|
||||
echo " <b>|".$upc.':</b> ';
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo "<a href=\"#tagListAnchor\" style=\"text-decoration: none\" onClick=\"addTag('$tag')\">$tag</a>, ";
|
||||
} else {
|
||||
echo "<a href=\"#tagListAnchor\" onClick=\"addTag('$tag')\">$tag</a>, ";
|
||||
|
@ -1014,7 +1065,7 @@ addLoadEvent(enableAutocomplete);
|
|||
</div>
|
||||
<?php
|
||||
} else {
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
?>
|
||||
<fieldset style="margin: 5px">
|
||||
<?php
|
||||
|
@ -1022,7 +1073,7 @@ addLoadEvent(enableAutocomplete);
|
|||
echo '<fieldset id="edit_entry_freetags" class="entryproperties_freetag mfp-hide">';
|
||||
}
|
||||
}
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
?>
|
||||
<legend><?php echo PLUGIN_EVENT_FREETAG_TITLE; ?></legend>
|
||||
<label for="serendipity[properties][freetag_tagList]" title="<?php echo PLUGIN_EVENT_FREETAG_TITLE; ?>">
|
||||
|
@ -1203,6 +1254,7 @@ addLoadEvent(enableAutocomplete);
|
|||
// Is it a feature?
|
||||
$this->displayEntry($eventData, $addData);
|
||||
return true;
|
||||
break; // Ian: shouldn't it break here? See upper question.
|
||||
|
||||
case 'xmlrpc_updertEntry':
|
||||
if (isset($eventData['id']) && isset($eventData['mt_keywords'])) {
|
||||
|
@ -1271,11 +1323,12 @@ addLoadEvent(enableAutocomplete);
|
|||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Add related entries to eventData[$entry]
|
||||
#
|
||||
# $entry: number of entry in $eventData
|
||||
# for use in displayEntry
|
||||
/**
|
||||
* Add related entries to eventData[$entry]
|
||||
*
|
||||
* $entry: number of entry in $eventData
|
||||
* for use in displayEntry
|
||||
*/
|
||||
function addRelatedEntries($entry, $manyEntries, $relatedEntries, $eventData) {
|
||||
|
||||
if (is_array($relatedEntries)) {
|
||||
|
@ -1292,9 +1345,10 @@ addLoadEvent(enableAutocomplete);
|
|||
return $eventData;
|
||||
}
|
||||
|
||||
#
|
||||
# $entry: number of entry in $eventData
|
||||
# for use in displayEntry
|
||||
/**
|
||||
* $entry: number of entry in $eventData
|
||||
* for use in displayEntry
|
||||
*/
|
||||
function addTags($entry, $tags, $eventData) {
|
||||
if (!is_array($eventData)) $eventData = array();
|
||||
|
||||
|
@ -1714,7 +1768,7 @@ addLoadEvent(enableAutocomplete);
|
|||
$this->install();
|
||||
$this->set_config('dbversion', 2);
|
||||
}
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
?>
|
||||
<div style="border: 1px solid #000;" class="freetagMenu">
|
||||
<ul>
|
||||
|
@ -1773,7 +1827,7 @@ addLoadEvent(enableAutocomplete);
|
|||
$page = (isset($serendipity['GET']['page']) ? $serendipity['GET']['page'] : 1);
|
||||
$from = ($page - 1) * $per_fetch;
|
||||
$to = ($page) * $per_fetch;
|
||||
if ($serendipity['version'][0] == '2') {
|
||||
if ($serendipity['version'][0] > 1) {
|
||||
echo '<h3>';
|
||||
}
|
||||
printf(PLUGIN_EVENT_FREETAG_REBUILD_FETCHNO, $from, $to);
|
||||
|
@ -1789,7 +1843,7 @@ addLoadEvent(enableAutocomplete);
|
|||
);
|
||||
|
||||
$total = serendipity_getTotalEntries();
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
printf(PLUGIN_EVENT_FREETAG_REBUILD_TOTAL . '<br />', $total);
|
||||
} else {
|
||||
printf(PLUGIN_EVENT_FREETAG_REBUILD_TOTAL, $total);
|
||||
|
@ -1797,14 +1851,14 @@ addLoadEvent(enableAutocomplete);
|
|||
}
|
||||
|
||||
if (is_array($entries)) {
|
||||
if ($serendipity['version'][0] == '2') {
|
||||
if ($serendipity['version'][0] > 1) {
|
||||
echo '<ul class="plainList">';
|
||||
}
|
||||
foreach ($entries AS $entry) {
|
||||
unset($entry['orderkey']);
|
||||
unset($entry['loginname']);
|
||||
unset($entry['email']);
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
printf('%d - "%s"<br />', $entry['id'], htmlspecialchars($entry['title']));
|
||||
} else {
|
||||
printf('<li>%d - "%s"', $entry['id'], htmlspecialchars($entry['title']));
|
||||
|
@ -1820,17 +1874,17 @@ addLoadEvent(enableAutocomplete);
|
|||
if (is_string($up)) {
|
||||
echo "<div>$up</div>\n";
|
||||
}
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo DONE . "<br />\n";
|
||||
} else {
|
||||
echo ' ... ' . DONE . "</li>\n";
|
||||
}
|
||||
}
|
||||
if ($serendipity['version'][0] == '2') {
|
||||
if ($serendipity['version'][0] > 1) {
|
||||
echo '</ul>';
|
||||
}
|
||||
}
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo '<br />';
|
||||
}
|
||||
|
||||
|
@ -1845,7 +1899,7 @@ addLoadEvent(enableAutocomplete);
|
|||
</script>
|
||||
<?php
|
||||
} else {
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo '<div class="serendipity_msg_notice">' . DONE . '</div>';
|
||||
} else {
|
||||
echo '<span class="msg_notice"><span class="icon-info-circled"></span>' . DONE . '</span>';
|
||||
|
@ -1875,7 +1929,7 @@ addLoadEvent(enableAutocomplete);
|
|||
}
|
||||
|
||||
// Cycle all entries
|
||||
if ($serendipity['version'][0] == '2') {
|
||||
if ($serendipity['version'][0] > 1) {
|
||||
echo '<ul class="plainList">';
|
||||
}
|
||||
foreach ($entries AS $id => $props) {
|
||||
|
@ -1896,7 +1950,7 @@ addLoadEvent(enableAutocomplete);
|
|||
}
|
||||
|
||||
$this->addTagsToEntry($id, $newtags);
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
printf(
|
||||
PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG_ENTRY . '<br />',
|
||||
$id,
|
||||
|
@ -1914,10 +1968,10 @@ addLoadEvent(enableAutocomplete);
|
|||
echo '</li>';
|
||||
}
|
||||
}
|
||||
if ($serendipity['version'][0] == '2') {
|
||||
if ($serendipity['version'][0] > 1) {
|
||||
echo '</ul>';
|
||||
}
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG . '<br />';
|
||||
} else {
|
||||
echo '<span class="msg_notice"><span class="icon-info-circled"></span>' . PLUGIN_EVENT_FREETAG_GLOBALCAT2TAG . '</span>';
|
||||
|
@ -1970,7 +2024,7 @@ addLoadEvent(enableAutocomplete);
|
|||
$r = serendipity_db_query($q);
|
||||
|
||||
if ($r === true) {
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE;
|
||||
} else {
|
||||
echo '<span class="msg_notice"><span class="icon-info-circled"></span> ' . PLUGIN_EVENT_FREETAG_MANAGE_UNTAGGED_NONE . '</span>';
|
||||
|
@ -1978,11 +2032,11 @@ addLoadEvent(enableAutocomplete);
|
|||
} else if (!is_array($r)) {
|
||||
echo $r;
|
||||
} else {
|
||||
if ($serendipity['version'][0] == '2') {
|
||||
if ($serendipity['version'][0] > 1) {
|
||||
echo '<ul class="plainList">';
|
||||
}
|
||||
foreach ($r as $row) {
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo '<p style="margin: 5px; border: 1px dotted #000; padding: 3px;" class="freetagMenu">
|
||||
<a href="' . FREETAG_EDITENTRY_URL . $row['id'] . '"><img style="border: 0px;" src="' . serendipity_getTemplateFile('admin/img/edit.png') . '"></a>
|
||||
' . $row['title'] . '
|
||||
|
@ -1994,7 +2048,7 @@ addLoadEvent(enableAutocomplete);
|
|||
</li>';
|
||||
}
|
||||
}
|
||||
if ($serendipity['version'][0] == '2') {
|
||||
if ($serendipity['version'][0] > 1) {
|
||||
echo '</ul>';
|
||||
}
|
||||
}
|
||||
|
@ -2017,7 +2071,7 @@ addLoadEvent(enableAutocomplete);
|
|||
}
|
||||
$url = FREETAG_MANAGE_URL . "&serendipity[tagview]=".htmlspecialchars($this->eventData['GET']['tagview']);
|
||||
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo '<br />' . PLUGIN_EVENT_FREETAG_KEYWORDS_DESC . '<br /><br />';
|
||||
} else {
|
||||
echo '<span class="msg_notice"><span class="icon-info-circled"></span>' . PLUGIN_EVENT_FREETAG_KEYWORDS_DESC . '</span>';
|
||||
|
@ -2056,7 +2110,7 @@ addLoadEvent(enableAutocomplete);
|
|||
?>
|
||||
<input type="hidden" name="serendipity[tag]" value="<?php echo urlencode(urldecode($serendipity['GET']['tag'])); ?>" />
|
||||
<?php
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
?>
|
||||
<input type="submit" name="serendipity[keywordsubmit]" class="serendipityPrettyButton input_button" value="<?php echo SAVE; ?>" />
|
||||
<?php
|
||||
|
@ -2066,7 +2120,7 @@ addLoadEvent(enableAutocomplete);
|
|||
<?php
|
||||
}
|
||||
} else {
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
?>
|
||||
<a href="<?php echo $url ?>&serendipity%5Btag%5D=<?php echo urlencode($tag)?>#edit"><?php echo EDIT ?></a>
|
||||
<?php
|
||||
|
@ -2116,7 +2170,7 @@ addLoadEvent(enableAutocomplete);
|
|||
<td><?php echo $weight; ?></td>
|
||||
<td>
|
||||
<?php
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
?>
|
||||
<a href="<?php echo $url?>&serendipity[tagaction]=rename&serendipity[tag]=<?php echo urlencode($tag)?>"><?php echo PLUGIN_EVENT_FREETAG_MANAGE_ACTION_RENAME ?></a>
|
||||
<a href="<?php echo $url?>&serendipity[tagaction]=split&serendipity[tag]=<?php echo urlencode($tag)?>"><?php echo PLUGIN_EVENT_FREETAG_MANAGE_ACTION_SPLIT ?></a>
|
||||
|
@ -2298,7 +2352,7 @@ addLoadEvent(enableAutocomplete);
|
|||
|
||||
function cleanupTagAssignments() {
|
||||
global $serendipity;
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo "<br>";
|
||||
}
|
||||
|
||||
|
@ -2327,14 +2381,14 @@ addLoadEvent(enableAutocomplete);
|
|||
$cleanup = serendipity_db_query($q_cleanup);
|
||||
|
||||
if ($cleanup === TRUE) {
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo "<b>".PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_SUCCESSFUL."</b>";
|
||||
} else {
|
||||
echo '<span class="msg_success"><span class="icon-ok-circled"></span> ' . PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_SUCCESSFUL . '</span>';
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo "<b>".PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_FAILED."</b><br><br><b>DB-Error:</b>".$cleanup;
|
||||
} else {
|
||||
echo '<div class="msg_error"><p><span class="icon-attention-circled"></span> ' . PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_FAILED . '</p><strong>DB-Error:</strong> ' . $cleanup . '</div>';
|
||||
|
@ -2347,7 +2401,7 @@ addLoadEvent(enableAutocomplete);
|
|||
foreach ($mappings as $mapping) {
|
||||
$cleanup_tags[$mapping['tag']][] = $mapping['entryid'];
|
||||
}
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_INFO."<br><br>";
|
||||
} else {
|
||||
echo '<span class="msg_notice"><span class="icon-info-circled"></span> ' . PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_INFO . '</span>';
|
||||
|
@ -2367,7 +2421,7 @@ addLoadEvent(enableAutocomplete);
|
|||
echo $this->getManageUrlAsHidden($this->eventData);
|
||||
echo '<input type="hidden" name="serendipity[tagview]" value="'.htmlspecialchars($this->eventData['GET']['tagview']).'">';
|
||||
echo '<input type="hidden" name="serendipity[perform]" value="true" />';
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo '<input class="serendipityPrettyButton input_button" type="submit" name="submit" value="'.PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_PERFORM.'" />';
|
||||
} else {
|
||||
echo '<input type="submit" name="submit" value="'.PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_PERFORM.'">';
|
||||
|
@ -2377,7 +2431,7 @@ addLoadEvent(enableAutocomplete);
|
|||
}
|
||||
elseif ($mappings === TRUE) {
|
||||
// No inconsistencies found
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo "<b>".PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_NOTHING."</b>";
|
||||
} else {
|
||||
echo '<span class="msg_notice"><span class="icon-info-circled"></span> ' . PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_NOTHING . '</span>';
|
||||
|
@ -2385,7 +2439,7 @@ addLoadEvent(enableAutocomplete);
|
|||
}
|
||||
else {
|
||||
// An error occures while searching for inconsistencies
|
||||
if ($serendipity['version'][0] == '1') {
|
||||
if ($serendipity['version'][0] < 2) {
|
||||
echo "<b>".PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_LOOKUP_ERROR."</b><br><br><b>DB-Error:</b>".$mappings;
|
||||
} else {
|
||||
echo '<div class="msg_error"><p><span class="icon-attention-circled"></span> ' . PLUGIN_EVENT_FREETAG_MANAGE_CLEANUP_LOOKUP_ERROR . '</p><strong>DB-Error:</strong> ' . $mappings . '</div>';
|
||||
|
|
Loading…
Reference in a new issue