add contents
This commit is contained in:
340
lib/plugins/tag/COPYING
Normal file
340
lib/plugins/tag/COPYING
Normal file
@@ -0,0 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
10
lib/plugins/tag/README
Normal file
10
lib/plugins/tag/README
Normal file
@@ -0,0 +1,10 @@
|
||||
====== Tag Plugin for DokuWiki ======
|
||||
|
||||
All documentation for the Tag Plugin is available online at:
|
||||
|
||||
* http://dokuwiki.org/plugin:tag
|
||||
|
||||
(c) 2005 - 2007 by Esther Brunner <wikidesign@gmail.com>
|
||||
(c) 2008 - 2009 by Gina Häußge, Michael Klier <dokuwiki@chimeric.de>
|
||||
(c) 2012 - 2013 by Michael Hamann and the tag plugin team <michael@content-space.de>
|
||||
See COPYING for license info.
|
107
lib/plugins/tag/_test/topic_and_tagrefine.test.php
Normal file
107
lib/plugins/tag/_test/topic_and_tagrefine.test.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
if (!defined('DOKU_INC')) die();
|
||||
|
||||
/**
|
||||
* Tests the tagRefine function of the tag plugin
|
||||
*/
|
||||
class plugin_tag_topic_and_tagrefine_test extends DokuWikiTest {
|
||||
private $all_pages = array(
|
||||
'tagged_page' => array('id' => 'tagged_page'),
|
||||
'negative_page' => array('id' => 'negative_page'),
|
||||
'third_page' => array('id' => 'third_page')
|
||||
);
|
||||
public function setUp() {
|
||||
$this->pluginsEnabled[] = 'tag';
|
||||
parent::setUp();
|
||||
|
||||
saveWikiText(
|
||||
'tagged_page',
|
||||
'{{tag>mytag test2tag}}', 'Test'
|
||||
);
|
||||
saveWikiText(
|
||||
'negative_page',
|
||||
'{{tag>negative_tag mytag}}',
|
||||
'Test setup'
|
||||
);
|
||||
saveWikiText(
|
||||
'third_page',
|
||||
'{{tag>third_tag}}',
|
||||
'Test setup'
|
||||
);
|
||||
idx_addPage('tagged_page');
|
||||
idx_addPage('negative_page');
|
||||
idx_addPage('third_page');
|
||||
}
|
||||
|
||||
public function testEmptyTag() {
|
||||
$this->assertTopicRefine(array('tagged_page', 'negative_page', 'third_page'), '');
|
||||
}
|
||||
|
||||
public function testOnlyNegative() {
|
||||
$this->assertTopicRefine(array('tagged_page', 'third_page'), '-negative_tag');
|
||||
}
|
||||
|
||||
public function testMixed() {
|
||||
$this->assertTopicRefine(array('tagged_page'), 'mytag -negative_tag');
|
||||
|
||||
}
|
||||
|
||||
public function testAnd() {
|
||||
$this->assertTopicRefine(array('tagged_page'), '+mytag +test2tag');
|
||||
}
|
||||
|
||||
public function testAndOr() {
|
||||
$this->assertTopicRefine(array('tagged_page', 'third_page'), '+test2tag third_tag');
|
||||
}
|
||||
|
||||
public function testOrAnd() {
|
||||
$this->assertTopicRefine(array('tagged_page'), 'mytag +test2tag');
|
||||
}
|
||||
|
||||
public function testRefineDoesntAdd() {
|
||||
/** @var helper_plugin_tag $helper */
|
||||
$helper = plugin_load('helper', 'tag');
|
||||
$pages = $helper->tagRefine(array(), 'mytag');
|
||||
$this->hasPages(array(), $pages, 'Refine with empty input array and "mytag" query: ');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if the getTopic and the tagRefine function with all pages as input both return the expected pages
|
||||
*
|
||||
* @param array $expected expected page ids
|
||||
* @param string $query the query for the tagRefine/getTopic-functions
|
||||
*/
|
||||
private function assertTopicRefine($expected, $query) {
|
||||
/** @var helper_plugin_tag $helper */
|
||||
$helper = plugin_load('helper', 'tag');
|
||||
$pages = $helper->tagRefine($this->all_pages, $query);
|
||||
$this->hasPages($expected, $pages, 'Refine: '.$query.': ');
|
||||
$pages = $helper->getTopic('', '', $query);
|
||||
$this->hasPages($expected, $pages, 'Topic: '.$query.': ');
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes sure that all pages were found and not more
|
||||
*
|
||||
* @param array $expected List of page ids
|
||||
* @param array $actual Result list from getTopic/tagRefine
|
||||
* @param string $msg_prefix A prefix that is prepended to all messages
|
||||
*/
|
||||
private function hasPages($expected, $actual, $msg_prefix = '') {
|
||||
foreach ($expected as $id) {
|
||||
$found = false;
|
||||
foreach ($actual as $page) {
|
||||
if ($page['id'] === $id) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->assertTrue($found, $msg_prefix.'Page '.$id.' expected but not found in the result');
|
||||
}
|
||||
|
||||
foreach ($actual as $page) {
|
||||
$this->assertTrue(in_array($page['id'], $expected), $msg_prefix.'Page '.$page['id'].' is in the result but wasn\'t expected');
|
||||
}
|
||||
}
|
||||
}
|
59
lib/plugins/tag/_test/topic_sort.test.php
Normal file
59
lib/plugins/tag/_test/topic_sort.test.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
if (!defined('DOKU_INC')) die();
|
||||
|
||||
/**
|
||||
* Tests the tagRefine function of the tag plugin
|
||||
*/
|
||||
class plugin_tag_topic_sorting_test extends DokuWikiTest {
|
||||
private $pages = array(
|
||||
'a',
|
||||
'aa',
|
||||
'a:a',
|
||||
'a:aa',
|
||||
'a:a:c',
|
||||
'a:a:b:a',
|
||||
'a:b:c'
|
||||
);
|
||||
/** @var helper_plugin_tag $helper */
|
||||
private $helper;
|
||||
|
||||
public function setUp() {
|
||||
global $conf;
|
||||
$this->pluginsEnabled[] = 'tag';
|
||||
parent::setUp();
|
||||
|
||||
$conf['plugin']['tag']['sortkey'] = 'ns';
|
||||
|
||||
$this->helper = plugin_load('helper', 'tag');
|
||||
|
||||
|
||||
foreach ($this->pages as $page) {
|
||||
saveWikiText(
|
||||
$page,
|
||||
'{{tag>mytag}}', 'Test'
|
||||
);
|
||||
idx_addPage($page);
|
||||
}
|
||||
}
|
||||
|
||||
public function test_ns_sort() {
|
||||
$this->assertEquals($this->pages, $this->extract_ids($this->helper->getTopic('', null, 'mytag')));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Extract the id attribute of the supplied pages
|
||||
*
|
||||
* @param array $pages The pages that shall be used
|
||||
* @return array The ids of the pages
|
||||
*/
|
||||
private function extract_ids($pages) {
|
||||
$result = array();
|
||||
foreach ($pages as $page) {
|
||||
$result[] = $page['id'];
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
36
lib/plugins/tag/_test/topic_tag.test.php
Normal file
36
lib/plugins/tag/_test/topic_tag.test.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Tests the basic functionality of the tag and topic syntax
|
||||
*/
|
||||
class topic_tag_test extends DokuWikiTest {
|
||||
function setup() {
|
||||
$this->pluginsEnabled[] = 'tag';
|
||||
$this->pluginsEnabled[] = 'pagelist';
|
||||
parent::setup();
|
||||
}
|
||||
|
||||
function test_topic_tag() {
|
||||
saveWikiText(
|
||||
'tagged_page',
|
||||
'{{tag>mytag test2tag}}', 'Test'
|
||||
);
|
||||
saveWikiText(
|
||||
'topic_page',
|
||||
'{{topic>mytag}}'.DOKU_LF.DOKU_LF.'{{tag>topictag mytag}}'.DOKU_LF, 'Test'
|
||||
);
|
||||
idx_addPage('topic_page');
|
||||
idx_addPage('tagged_page');
|
||||
$this->assertContains('tag:topictag', p_wiki_xhtml('topic_page'), 'Page with tag syntax doesn\'t contain tag output');
|
||||
$this->assertNotContains('tag:test2tag', p_wiki_xhtml('topic_page'), 'Page with tag and topic syntax tag which is listed in a page that is listed in the topic syntax but not on the page itself');
|
||||
$this->assertContains('topic_page', p_wiki_xhtml('topic_page'), 'Page with topic and tag syntax doesn\'t list itself in the topic syntax');
|
||||
$this->assertContains('tagged_page', p_wiki_xhtml('topic_page'), 'Page with topic syntax doesn\'t list matching page');
|
||||
$this->assertContains('tag:mytag', p_wiki_xhtml('tagged_page'), 'Page with tag syntax doesn\'t contain tag output');
|
||||
$this->assertContains('tag:test2tag', p_wiki_xhtml('tagged_page'), 'Page with tag syntax doesn\'t contain tag output');
|
||||
$this->assertNotContains('tag:topictag', p_wiki_xhtml('tagged_page'), 'Page with tag syntax contains tag from a page in which it is listed in the topic syntax');
|
||||
saveWikiText('tagged_page', '{{tag>test2tag}}', 'Deleted mytag');
|
||||
$this->assertNotContains('tagged_page', p_wiki_xhtml('topic_page'), 'Page that no longer contains the tag is still listed in the topic syntax (caching problems?)');
|
||||
$this->assertNotContains('tag:mytag', p_wiki_xhtml('tagged_page'), 'Removed tag is still listed in XHTML output');
|
||||
|
||||
}
|
||||
}
|
138
lib/plugins/tag/action.php
Normal file
138
lib/plugins/tag/action.php
Normal file
@@ -0,0 +1,138 @@
|
||||
<?php
|
||||
/**
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* Action part of the tag plugin, handles tag display and index updates
|
||||
*/
|
||||
class action_plugin_tag extends DokuWiki_Action_Plugin {
|
||||
|
||||
/**
|
||||
* register the eventhandlers
|
||||
*
|
||||
* @param Doku_Event_Handler $contr
|
||||
*/
|
||||
function register(Doku_Event_Handler $contr) {
|
||||
$contr->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, '_handle_act', array());
|
||||
$contr->register_hook('TPL_ACT_UNKNOWN', 'BEFORE', $this, '_handle_tpl_act', array());
|
||||
$contr->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, '_handle_keywords', array());
|
||||
if($this->getConf('toolbar_icon')) $contr->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'insert_toolbar_button', array ());
|
||||
$contr->register_hook('INDEXER_VERSION_GET', 'BEFORE', $this, '_indexer_version', array());
|
||||
$contr->register_hook('INDEXER_PAGE_ADD', 'BEFORE', $this, '_indexer_index_tags', array());
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a version string to the index so it is rebuilt
|
||||
* whenever the stored data format changes.
|
||||
*/
|
||||
function _indexer_version(Doku_Event $event, $param) {
|
||||
global $conf;
|
||||
$event->data['plugin_tag'] = '0.2.deaccent='.$conf['deaccent'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Add all data of the subject metadata to the metadata index.
|
||||
*/
|
||||
function _indexer_index_tags(Doku_Event $event, $param) {
|
||||
/* @var helper_plugin_tag $helper */
|
||||
if ($helper = $this->loadHelper('tag')) {
|
||||
// make sure the tags are cleaned and no duplicate tags are added to the index
|
||||
$tags = p_get_metadata($event->data['page'], 'subject');
|
||||
if (!is_array($tags)) {
|
||||
$event->data['metadata']['subject'] = array();
|
||||
} else {
|
||||
$event->data['metadata']['subject'] = $helper->_cleanTagList($tags);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* catch tag action
|
||||
*
|
||||
* @author Michael Klier <chi@chimeric.de>
|
||||
*/
|
||||
function _handle_act(Doku_Event $event, $param) {
|
||||
if($event->data != 'showtag') return;
|
||||
$event->preventDefault();
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the tag page
|
||||
*
|
||||
* @param Doku_Event $event The TPL_ACT_UNKNOWN event
|
||||
* @param array $param optional parameters (unused)
|
||||
*/
|
||||
function _handle_tpl_act(Doku_Event $event, $param) {
|
||||
global $lang;
|
||||
|
||||
if($event->data != 'showtag') return;
|
||||
$event->preventDefault();
|
||||
|
||||
$tagns = $this->getConf('namespace');
|
||||
$flags = explode(',', str_replace(" ", "", $this->getConf('pagelist_flags')));
|
||||
|
||||
$tag = trim(str_replace($this->getConf('namespace').':', '', $_REQUEST['tag']));
|
||||
$ns = trim($_REQUEST['ns']);
|
||||
|
||||
/* @var helper_plugin_tag $helper */
|
||||
if ($helper = $this->loadHelper('tag')) $pages = $helper->getTopic($ns, '', $tag);
|
||||
|
||||
if(!empty($pages)) {
|
||||
|
||||
// let Pagelist Plugin do the work for us
|
||||
if ((!$pagelist = $this->loadHelper('pagelist'))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* @var helper_plugin_pagelist $pagelist */
|
||||
$pagelist->setFlags($flags);
|
||||
$pagelist->startList();
|
||||
foreach ($pages as $page) {
|
||||
$pagelist->addPage($page);
|
||||
}
|
||||
|
||||
print '<h1>TAG: ' . hsc(str_replace('_', ' ', $_REQUEST['tag'])) . '</h1>' . DOKU_LF;
|
||||
print '<div class="level1">' . DOKU_LF;
|
||||
print $pagelist->finishList();
|
||||
print '</div>' . DOKU_LF;
|
||||
|
||||
} else {
|
||||
print '<div class="level1"><p>' . $lang['nothingfound'] . '</p></div>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts the tag toolbar button
|
||||
*/
|
||||
function insert_toolbar_button(Doku_Event $event, $param) {
|
||||
$event->data[] = array(
|
||||
'type' => 'format',
|
||||
'title' => $this->getLang('toolbar_icon'),
|
||||
'icon' => '../../plugins/tag/images/tag-toolbar.png',
|
||||
'open' => '{{tag>',
|
||||
'close' => '}}'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent displaying underscores instead of blanks inside the page keywords
|
||||
*/
|
||||
function _handle_keywords(Doku_Event $event) {
|
||||
global $ID;
|
||||
|
||||
// Fetch tags for the page; stop proceeding when no tags specified
|
||||
$tags = p_get_metadata($ID, 'subject', METADATA_DONT_RENDER);
|
||||
if(is_null($tags)) true;
|
||||
|
||||
// Replace underscores with blanks
|
||||
foreach($event->data['meta'] as &$meta) {
|
||||
if($meta['name'] == 'keywords') {
|
||||
$meta['content'] = str_replace('_', ' ', $meta['content']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// vim:ts=4:sw=4:et:
|
13
lib/plugins/tag/conf/default.php
Normal file
13
lib/plugins/tag/conf/default.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
/**
|
||||
* Options for the Tag Plugin
|
||||
*/
|
||||
$conf['namespace'] = 'tag'; // where should tag links point to? default: 'tag'
|
||||
$conf['sortkey'] = 'title'; // sort key for topic lists
|
||||
$conf['sortorder'] = 'ascending'; // ascending or descending
|
||||
$conf['pagelist_flags'] = 'list'; // formatting options for the page list plugin
|
||||
$conf['toolbar_icon'] = 0; // enables/disables the toolbar icon
|
||||
$conf['list_tags_of_subns'] = 0; // list also tags in subnamespaces of a specified namespace (count syntax)
|
||||
$conf['tags_list_css'] = 'tags'; // wich CSS style to use for tag list?
|
||||
|
||||
//Setup VIM: ex: et ts=2 :
|
20
lib/plugins/tag/conf/metadata.php
Normal file
20
lib/plugins/tag/conf/metadata.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/**
|
||||
* Metadata for configuration manager plugin
|
||||
* Additions for the tag plugin
|
||||
*
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
*/
|
||||
|
||||
$meta['namespace'] = array('string');
|
||||
$meta['sortkey'] = array('multichoice',
|
||||
'_choices' => array('cdate', 'mdate', 'pagename', 'id', 'ns', 'title'));
|
||||
$meta['sortorder'] = array('multichoice',
|
||||
'_choices' => array('ascending', 'descending'));
|
||||
$meta['pagelist_flags'] = array('string');
|
||||
$meta['toolbar_icon'] = array('onoff');
|
||||
$meta['list_tags_of_subns'] = array('onoff');
|
||||
$meta['tags_list_css'] = array('multichoice',
|
||||
'_choices' => array('tags', 'tagstop'));
|
||||
|
||||
//Setup VIM: ex: et ts=2 :
|
513
lib/plugins/tag/helper.php
Normal file
513
lib/plugins/tag/helper.php
Normal file
@@ -0,0 +1,513 @@
|
||||
<?php
|
||||
/**
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* Helper part of the tag plugin, allows to query and print tags
|
||||
*/
|
||||
class helper_plugin_tag extends DokuWiki_Plugin {
|
||||
|
||||
var $namespace = ''; // namespace tag links point to
|
||||
|
||||
var $sort = ''; // sort key
|
||||
var $topic_idx = array();
|
||||
|
||||
/**
|
||||
* Constructor gets default preferences and language strings
|
||||
*/
|
||||
function __construct() {
|
||||
global $ID;
|
||||
|
||||
$this->namespace = $this->getConf('namespace');
|
||||
if (!$this->namespace) $this->namespace = getNS($ID);
|
||||
$this->sort = $this->getConf('sortkey');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns some documentation of the methods provided by this helper part
|
||||
*
|
||||
* @return array Method description
|
||||
*/
|
||||
function getMethods() {
|
||||
$result = array();
|
||||
$result[] = array(
|
||||
'name' => 'th',
|
||||
'desc' => 'returns the header for the tags column for pagelist',
|
||||
'return' => array('header' => 'string'),
|
||||
);
|
||||
$result[] = array(
|
||||
'name' => 'td',
|
||||
'desc' => 'returns the tag links of a given page',
|
||||
'params' => array('id' => 'string'),
|
||||
'return' => array('links' => 'string'),
|
||||
);
|
||||
$result[] = array(
|
||||
'name' => 'tagLinks',
|
||||
'desc' => 'generates tag links for given words',
|
||||
'params' => array('tags' => 'array'),
|
||||
'return' => array('links' => 'string'),
|
||||
);
|
||||
$result[] = array(
|
||||
'name' => 'getTopic',
|
||||
'desc' => 'returns a list of pages tagged with the given keyword',
|
||||
'params' => array(
|
||||
'namespace (optional)' => 'string',
|
||||
'number (not used)' => 'integer',
|
||||
'tag (required)' => 'string'),
|
||||
'return' => array('pages' => 'array'),
|
||||
);
|
||||
$result[] = array(
|
||||
'name' => 'tagRefine',
|
||||
'desc' => 'refines an array of pages with tags',
|
||||
'params' => array(
|
||||
'pages to refine' => 'array',
|
||||
'refinement tags' => 'string'),
|
||||
'return' => array('pages' => 'array'),
|
||||
);
|
||||
$result[] = array(
|
||||
'name' => 'tagOccurrences',
|
||||
'desc' => 'returns a list of tags with their number of occurrences',
|
||||
'params' => array(
|
||||
'list of tags to get the occurrences for' => 'array',
|
||||
'namespaces to which the search shall be restricted' => 'array',
|
||||
'if all tags shall be returned (then the first parameter is ignored)' => 'boolean',
|
||||
'if the namespaces shall be searched recursively' => 'boolean'),
|
||||
'return' => array('tags' => 'array'),
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the column header for th Pagelist Plugin
|
||||
*/
|
||||
function th() {
|
||||
return $this->getLang('tags');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the cell data for the Pagelist Plugin
|
||||
*/
|
||||
function td($id) {
|
||||
$subject = $this->_getSubjectMetadata($id);
|
||||
return $this->tagLinks($subject);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the links for given tags
|
||||
*
|
||||
* @param array $tags an array of tags
|
||||
* @return string HTML link tags
|
||||
*/
|
||||
function tagLinks($tags) {
|
||||
if (empty($tags) || ($tags[0] == '')) return '';
|
||||
|
||||
$links = array();
|
||||
foreach ($tags as $tag) {
|
||||
$links[] = $this->tagLink($tag);
|
||||
}
|
||||
return implode(','.DOKU_LF.DOKU_TAB, $links);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the link for one given tag
|
||||
*
|
||||
* @param string $tag the tag the link shall point to
|
||||
* @param string $title the title of the link (optional)
|
||||
* @param bool $dynamic if the link class shall be changed if no pages with the specified tag exist
|
||||
* @return string The HTML code of the link
|
||||
*/
|
||||
function tagLink($tag, $title = '', $dynamic = false) {
|
||||
global $conf;
|
||||
$svtag = $tag;
|
||||
$tag_title = str_replace('_', ' ', noNS($tag));
|
||||
resolve_pageid($this->namespace, $tag, $exists); // resolve shortcuts
|
||||
if ($exists) {
|
||||
$class = 'wikilink1';
|
||||
$url = wl($tag);
|
||||
if ($conf['useheading']) {
|
||||
// important: set sendond param to false to prevent recursion!
|
||||
$heading = p_get_first_heading($tag, false);
|
||||
if ($heading) $tag_title = $heading;
|
||||
}
|
||||
} else {
|
||||
if ($dynamic) {
|
||||
$pages = $this->getTopic('', 1, $svtag);
|
||||
if (empty($pages)) {
|
||||
$class = 'wikilink2';
|
||||
} else {
|
||||
$class = 'wikilink1';
|
||||
}
|
||||
} else {
|
||||
$class = 'wikilink1';
|
||||
}
|
||||
$url = wl($tag, array('do'=>'showtag', 'tag'=>$svtag));
|
||||
}
|
||||
if (!$title) $title = $tag_title;
|
||||
$link = array(
|
||||
'href' => $url,
|
||||
'class' => $class,
|
||||
'tooltip' => hsc($tag),
|
||||
'title' => hsc($title)
|
||||
);
|
||||
trigger_event('PLUGIN_TAG_LINK', $link);
|
||||
$link = '<a href="'.$link['href'].'" class="'.$link['class'].'" title="'.$link['tooltip'].'" rel="tag">'.$link['title'].'</a>';
|
||||
return $link;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of pages with a certain tag; very similar to ft_backlinks()
|
||||
*
|
||||
* @param string $ns A namespace to which all pages need to belong, "." for only the root namespace
|
||||
* @param int $num The maximum number of pages that shall be returned
|
||||
* @param string $tag The tag that shall be searched
|
||||
* @return array The list of pages
|
||||
*
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
*/
|
||||
function getTopic($ns = '', $num = NULL, $tag = '') {
|
||||
if (!$tag) $tag = $_REQUEST['tag'];
|
||||
$tag = $this->_parseTagList($tag, true);
|
||||
$result = array();
|
||||
|
||||
// find the pages using topic.idx
|
||||
$pages = $this->_tagIndexLookup($tag);
|
||||
if (!count($pages)) return $result;
|
||||
|
||||
foreach ($pages as $page) {
|
||||
// exclude pages depending on ACL and namespace
|
||||
if($this->_notVisible($page, $ns)) continue;
|
||||
$tags = $this->_getSubjectMetadata($page);
|
||||
// don't trust index
|
||||
if (!$this->_checkPageTags($tags, $tag)) continue;
|
||||
|
||||
// get metadata
|
||||
$meta = p_get_metadata($page);
|
||||
|
||||
$perm = auth_quickaclcheck($page);
|
||||
|
||||
// skip drafts unless for users with create privilege
|
||||
$draft = ($meta['type'] == 'draft');
|
||||
if ($draft && ($perm < AUTH_CREATE)) continue;
|
||||
|
||||
$title = $meta['title'];
|
||||
$date = ($this->sort == 'mdate' ? $meta['date']['modified'] : $meta['date']['created'] );
|
||||
$taglinks = $this->tagLinks($tags);
|
||||
|
||||
// determine the sort key
|
||||
if ($this->sort == 'id') $key = $page;
|
||||
elseif ($this->sort == 'ns') {
|
||||
$pos = strrpos($page, ':');
|
||||
if ($pos === false) $key = "\0".$page;
|
||||
else $key = substr_replace($page, "\0\0", $pos, 1);
|
||||
$key = str_replace(':', "\0", $key);
|
||||
} elseif ($this->sort == 'pagename') $key = noNS($page);
|
||||
elseif ($this->sort == 'title') {
|
||||
$key = utf8_strtolower($title);
|
||||
if (empty($key)) $key = str_replace('_', ' ', noNS($page));
|
||||
} else $key = $date;
|
||||
// make sure that the key is unique
|
||||
$key = $this->_uniqueKey($key, $result);
|
||||
|
||||
$result[$key] = array(
|
||||
'id' => $page,
|
||||
'title' => $title,
|
||||
'date' => $date,
|
||||
'user' => $meta['creator'],
|
||||
'desc' => $meta['description']['abstract'],
|
||||
'cat' => $tags[0],
|
||||
'tags' => $taglinks,
|
||||
'perm' => $perm,
|
||||
'exists' => true,
|
||||
'draft' => $draft, );
|
||||
|
||||
if ($num && count($result) >= $num) break;
|
||||
}
|
||||
|
||||
// finally sort by sort key
|
||||
if ($this->getConf('sortorder') == 'ascending') ksort($result);
|
||||
else krsort($result);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Refine found pages with tags (+tag: AND, -tag: (AND) NOT)
|
||||
*
|
||||
* @param array $pages The pages that shall be filtered, each page needs to be an array with a key "id"
|
||||
* @param string $refine The list of tags in the form "tag +tag2 -tag3". The tags will be cleaned.
|
||||
* @return array The filtered list of pages
|
||||
*/
|
||||
function tagRefine($pages, $refine) {
|
||||
if (!is_array($pages)) return $pages; // wrong data type
|
||||
$tags = $this->_parseTagList($refine, true);
|
||||
$all_pages = $this->_tagIndexLookup($tags);
|
||||
|
||||
foreach ($pages as $key => $page) {
|
||||
if (!in_array($page['id'], $all_pages)) unset($pages[$key]);
|
||||
}
|
||||
|
||||
return $pages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get count of occurrences for a list of tags
|
||||
*
|
||||
* @param array $tags array of tags
|
||||
* @param array $namespaces array of namespaces where to count the tags
|
||||
* @param boolean $allTags boolean if all available tags should be counted
|
||||
* @param boolean $recursive boolean if pages in subnamespaces are allowed
|
||||
* @return array
|
||||
*/
|
||||
function tagOccurrences($tags, $namespaces = NULL, $allTags = false, $recursive = NULL) {
|
||||
// map with trim here in order to remove newlines from tags
|
||||
if($allTags) $tags = array_map('trim', idx_getIndex('subject', '_w'));
|
||||
$tags = $this->_cleanTagList($tags);
|
||||
$otags = array(); //occurrences
|
||||
if(!$namespaces || $namespaces[0] == '' || !is_array($namespaces)) $namespaces = NULL; // $namespaces not specified
|
||||
|
||||
$indexer = idx_get_indexer();
|
||||
$indexer_pages = $indexer->lookupKey('subject', $tags, array($this, '_tagCompare'));
|
||||
|
||||
$root_allowed = ($namespaces == NULL ? false : in_array('.', $namespaces));
|
||||
if ($recursive === NULL)
|
||||
$recursive = $this->getConf('list_tags_of_subns');
|
||||
|
||||
foreach ($tags as $tag) {
|
||||
if (!isset($indexer_pages[$tag])) continue;
|
||||
|
||||
// just to be sure remove duplicate pages from the list of pages
|
||||
$pages = array_unique($indexer_pages[$tag]);
|
||||
|
||||
// don't count hidden pages or pages the user can't access
|
||||
// for performance reasons this doesn't take drafts into account
|
||||
$pages = array_filter($pages, array($this, '_isVisible'));
|
||||
|
||||
if (empty($pages)) continue;
|
||||
|
||||
if ($namespaces == NULL || ($root_allowed && $recursive)) {
|
||||
// count all pages
|
||||
$otags[$tag] = count($pages);
|
||||
} else if (!$recursive) {
|
||||
// filter by exact namespace
|
||||
$otags[$tag] = 0;
|
||||
foreach ($pages as $page) {
|
||||
$ns = getNS($page);
|
||||
if (($ns == false && $root_allowed) || in_array($ns, $namespaces)) $otags[$tag]++;
|
||||
}
|
||||
} else { // recursive, no root
|
||||
$otags[$tag] = 0;
|
||||
foreach ($pages as $page) {
|
||||
foreach ($namespaces as $ns) {
|
||||
if(strpos($page, $ns.':') === 0 ) {
|
||||
$otags[$tag]++ ;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// don't return tags without pages
|
||||
if ($otags[$tag] == 0) unset($otags[$tag]);
|
||||
}
|
||||
return $otags;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the subject metadata cleaning the result
|
||||
*
|
||||
* @param string $id the page id
|
||||
* @return array
|
||||
*/
|
||||
function _getSubjectMetadata($id){
|
||||
$tags = p_get_metadata($id, 'subject');
|
||||
if (!is_array($tags)) $tags = explode(' ', $tags);
|
||||
return array_unique($tags);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tag index lookup
|
||||
*
|
||||
* @param array $tags the tags to filter
|
||||
* @return array the matching page ids
|
||||
*/
|
||||
function _tagIndexLookup($tags) {
|
||||
$result = array(); // array of page ids
|
||||
|
||||
$clean_tags = array();
|
||||
foreach ($tags as $i => $tag) {
|
||||
if (($tag[0] == '+') || ($tag[0] == '-'))
|
||||
$clean_tags[$i] = substr($tag, 1);
|
||||
else
|
||||
$clean_tags[$i] = $tag;
|
||||
}
|
||||
|
||||
$indexer = idx_get_indexer();
|
||||
$pages = $indexer->lookupKey('subject', $clean_tags, array($this, '_tagCompare'));
|
||||
// use all pages as basis if the first tag isn't an "or"-tag or if there are no tags given
|
||||
if (empty($tags) || $clean_tags[0] != $tags[0]) $result = $indexer->getPages();
|
||||
|
||||
foreach ($tags as $i => $tag) {
|
||||
$t = $clean_tags[$i];
|
||||
if (!is_array($pages[$t])) $pages[$t] = array();
|
||||
|
||||
if ($tag[0] == '+') { // AND: add only if in both arrays
|
||||
$result = array_intersect($result, $pages[$t]);
|
||||
} elseif ($tag[0] == '-') { // NOT: remove array from docs
|
||||
$result = array_diff($result, $pages[$t]);
|
||||
} else { // OR: add array to docs
|
||||
$result = array_unique(array_merge($result, $pages[$t]));
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Splits a string into an array of tags
|
||||
*/
|
||||
function _parseTagList($tags, $clean = false) {
|
||||
|
||||
// support for "quoted phrase tags"
|
||||
if (preg_match_all('#".*?"#', $tags, $matches)) {
|
||||
foreach ($matches[0] as $match) {
|
||||
$replace = str_replace(' ', '_', substr($match, 1, -1));
|
||||
$tags = str_replace($match, $replace, $tags);
|
||||
}
|
||||
}
|
||||
|
||||
$tags = preg_split('/ /', $tags, -1, PREG_SPLIT_NO_EMPTY);
|
||||
|
||||
if ($clean) {
|
||||
return $this->_cleanTagList($tags);
|
||||
} else {
|
||||
return $tags;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean a list (array) of tags using _cleanTag
|
||||
*/
|
||||
function _cleanTagList($tags) {
|
||||
return array_unique(array_map(array($this, '_cleanTag'), $tags));
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleans a tag using cleanID while preserving a possible prefix of + or -
|
||||
*/
|
||||
function _cleanTag($tag) {
|
||||
$prefix = substr($tag, 0, 1);
|
||||
$tag = $this->_applyMacro($tag);
|
||||
if ($prefix === '-' || $prefix === '+') {
|
||||
return $prefix.cleanID($tag);
|
||||
} else {
|
||||
return cleanID($tag);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes user or date dependent topic lists possible
|
||||
*/
|
||||
function _applyMacro($id) {
|
||||
/** @var DokuWiki_Auth_Plugin $auth */
|
||||
global $INFO, $auth;
|
||||
|
||||
$user = $_SERVER['REMOTE_USER'];
|
||||
$group = '';
|
||||
// .htaccess auth doesn't provide the auth object
|
||||
if($auth) {
|
||||
$userdata = $auth->getUserData($user);
|
||||
$group = $userdata['grps'][0];
|
||||
}
|
||||
|
||||
$replace = array(
|
||||
'@USER@' => cleanID($user),
|
||||
'@NAME@' => cleanID($INFO['userinfo']['name']),
|
||||
'@GROUP@' => cleanID($group),
|
||||
'@YEAR@' => date('Y'),
|
||||
'@MONTH@' => date('m'),
|
||||
'@DAY@' => date('d'),
|
||||
);
|
||||
return str_replace(array_keys($replace), array_values($replace), $id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Non-recursive function to check whether an array key is unique
|
||||
*
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
* @author Ilya S. Lebedev <ilya@lebedev.net>
|
||||
*/
|
||||
function _uniqueKey($key, &$result) {
|
||||
|
||||
// increase numeric keys by one
|
||||
if (is_numeric($key)) {
|
||||
while (array_key_exists($key, $result)) $key++;
|
||||
return $key;
|
||||
|
||||
// append a number to literal keys
|
||||
} else {
|
||||
$num = 0;
|
||||
$testkey = $key;
|
||||
while (array_key_exists($testkey, $result)) {
|
||||
$testkey = $key.$num;
|
||||
$num++;
|
||||
}
|
||||
return $testkey;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Opposite of _notVisible
|
||||
*/
|
||||
function _isVisible($id, $ns='') {
|
||||
return !$this->_notVisible($id, $ns);
|
||||
}
|
||||
/**
|
||||
* Check visibility of the page
|
||||
*
|
||||
* @param string $id the page id
|
||||
* @param string $ns the namespace authorized
|
||||
* @return bool if the page is hidden
|
||||
*/
|
||||
function _notVisible($id, $ns="") {
|
||||
if (isHiddenPage($id)) return true; // discard hidden pages
|
||||
// discard if user can't read
|
||||
if (auth_quickaclcheck($id) < AUTH_READ) return true;
|
||||
// filter by namespace, root namespace is identified with a dot
|
||||
if($ns == '.') {
|
||||
// root namespace is specified, discard all pages who lay outside the root namespace
|
||||
if(getNS($id) != false) return true;
|
||||
} else {
|
||||
// ("!==0" namespace found at position 0)
|
||||
if ($ns && (strpos(':'.getNS($id).':', ':'.$ns.':') !== 0)) return true;
|
||||
}
|
||||
return !page_exists($id, '', false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for the indexer in order to avoid interpreting wildcards
|
||||
*/
|
||||
function _tagCompare($tag1, $tag2) {
|
||||
return $tag1 === $tag2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the page is a real candidate for the result of the getTopic
|
||||
*
|
||||
* @param array $pagetags tags on the metadata of the page
|
||||
* @param array $tags tags we are looking
|
||||
* @return bool
|
||||
*/
|
||||
function _checkPageTags($pagetags, $tags) {
|
||||
$result = false;
|
||||
foreach($tags as $tag) {
|
||||
if ($tag[0] == "+" and !in_array(substr($tag, 1), $pagetags)) $result = false;
|
||||
if ($tag[0] == "-" and in_array(substr($tag, 1), $pagetags)) $result = false;
|
||||
if (in_array($tag, $pagetags)) $result = true;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
// vim:ts=4:sw=4:et:
|
BIN
lib/plugins/tag/images/tag-toolbar.png
Normal file
BIN
lib/plugins/tag/images/tag-toolbar.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 328 B |
BIN
lib/plugins/tag/images/tag.gif
Normal file
BIN
lib/plugins/tag/images/tag.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 111 B |
20
lib/plugins/tag/lang/ar/lang.php
Normal file
20
lib/plugins/tag/lang/ar/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Muhammad Bashir Al-Noimi <bashir.storm@gmail.com>
|
||||
* @author alhajr <alhajr300@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'العلامة';
|
||||
$lang['tags'] = 'العلامات';
|
||||
$lang['topic'] = 'الموضوع';
|
||||
$lang['count'] = 'العد';
|
||||
$lang['toolbar_icon'] = 'إدراج علامة-بناء الجملة';
|
||||
$lang['empty_output'] = 'الإخراج فارغة';
|
||||
|
||||
$lang['include'] = 'تضمين';
|
||||
$lang['exclude'] = 'استبعاد';
|
||||
$lang['use_and'] = 'استخدام منطق AND';
|
||||
$lang['no_tags'] = 'لم يتم العثور على العلامات ';
|
31
lib/plugins/tag/lang/ar/settings.php
Normal file
31
lib/plugins/tag/lang/ar/settings.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Muhammad Bashir Al-Noimi <bashir.storm@gmail.com>
|
||||
* @author alhajr <alhajr300@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'فضاء الأسماء الإفتراضي للأقسام';
|
||||
$lang['toolbar_icon'] = 'تظهر أيقونة شريط الأدوات (مسح ذاكرة التخزين المؤقت للبيانات//* وذاكرة التخزين المؤقت للمستعرض إذا لم يتم عرض)';
|
||||
|
||||
$lang['sortkey'] = 'ترتيب التدوينات حسب:';
|
||||
$lang['sortkey_o_cdate'] = 'تاريخ الإنشاء';
|
||||
$lang['sortkey_o_mdate'] = 'تاريخ التعديل';
|
||||
$lang['sortkey_o_pagename'] = 'إسم الصفحة';
|
||||
$lang['sortkey_o_id'] = 'رقم الصفحة';
|
||||
$lang['sortkey_o_ns'] = 'نيم سبيس (مساحة الاسم)';
|
||||
$lang['sortkey_o_title'] = 'العنوان';
|
||||
|
||||
$lang['sortorder'] = 'ترتيب الفرز';
|
||||
$lang['sortorder_o_ascending'] = 'ترتيب تصاعدي';
|
||||
$lang['sortorder_o_descending'] = 'تنازلي';
|
||||
|
||||
$lang['pagelist_flags'] = 'تنسيق إعلام ل taglist (مفصولة بفاصلة، لإعلام المتوفرة راجع وثائق البرنامج المساعد pagelist )';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'قائمة أيضا العلامات في مساحات الأسماء الفرعية لمساحة الاسم المحدد (بناء الجملة عدد مرات)';
|
||||
|
||||
$lang['tags_list_css'] = 'اختر النمط المطبق على قائمة علامات الصفحات';
|
||||
$lang['tags_list_css_o_tags'] = 'أسلوب إفتراضي';
|
||||
$lang['tags_list_css_o_tagstop'] = 'الأمثل لقائمة العلامات في أعلى الصفحة';
|
18
lib/plugins/tag/lang/be/lang.php
Normal file
18
lib/plugins/tag/lang/be/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Тэг';
|
||||
$lang['tags'] = 'Тэгі';
|
||||
$lang['topic'] = 'Тэмы';
|
||||
$lang['count'] = 'Колькасць';
|
||||
$lang['toolbar_icon'] = 'Уставіць тэг-сінтаксіс';
|
||||
$lang['empty_output'] = 'Пусты вывад';
|
||||
|
||||
$lang['include'] = 'Включаць';
|
||||
$lang['exclude'] = 'Выключаць';
|
||||
$lang['use_and'] = 'Выкарыстоўваць лагічнае AND';
|
||||
$lang['no_tags'] = 'Тэгі не знойдзены';
|
29
lib/plugins/tag/lang/be/settings.php
Normal file
29
lib/plugins/tag/lang/be/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Прастора імёнаў па змаўчанні для тэгаў';
|
||||
$lang['toolbar_icon'] = 'Паказваць кнопку на панэлі інструментаў (калі значок не адлюстроўваецца, ачысціце data/cache/* і кэш браўзэра)';
|
||||
|
||||
$lang['sortkey'] = 'Сартаваць спіс старонак па:';
|
||||
$lang['sortkey_o_cdate'] = 'даце стварэння';
|
||||
$lang['sortkey_o_mdate'] = 'даце рэдагавання';
|
||||
$lang['sortkey_o_pagename'] = 'імя старонкі';
|
||||
$lang['sortkey_o_id'] = 'ID старонкі';
|
||||
$lang['sortkey_o_ns'] = 'прасторы назваў';
|
||||
$lang['sortkey_o_title'] = 'загалоўку';
|
||||
|
||||
$lang['sortorder'] = 'Парадак сартавання';
|
||||
$lang['sortorder_o_ascending'] = 'па ўзрастанні';
|
||||
$lang['sortorder_o_descending'] = 'па змяншэнні';
|
||||
|
||||
$lang['pagelist_flags'] = 'Прыкметы (flags) фарматавання для спісу тэгаў (коскамі; спіс даступных прыкмет (flags) апісаны ў дакументацыі плагіна Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Таксама паказваць тэгі ў подпространство імёнаў адзначаных прастор імёнаў (сінтаксіс падліку (count))';
|
||||
|
||||
$lang['tags_list_css'] = 'Вылучыць стыль для спісу тэгаў на старонках';
|
||||
$lang['tags_list_css_o_tags'] = 'стыль па змаўчанні';
|
||||
$lang['tags_list_css_o_tagstop'] = 'аптымізацыя для размяшчэння наверсе старонкі';
|
19
lib/plugins/tag/lang/bg/lang.php
Normal file
19
lib/plugins/tag/lang/bg/lang.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Kiril <neohidra@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Етикет';
|
||||
$lang['tags'] = 'Етикети';
|
||||
$lang['topic'] = 'Тема';
|
||||
$lang['count'] = 'Брой';
|
||||
$lang['toolbar_icon'] = 'Вмъкване на синтаксис за етикет';
|
||||
$lang['empty_output'] = 'Празен изход';
|
||||
|
||||
$lang['include'] = 'Включи';
|
||||
$lang['exclude'] = 'Изключи';
|
||||
$lang['use_and'] = 'Ползван логика AND';
|
||||
$lang['no_tags'] = 'Не са открити етикети';
|
30
lib/plugins/tag/lang/bg/settings.php
Normal file
30
lib/plugins/tag/lang/bg/settings.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Kiril <neohidra@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Стандартно именно пространство за етикетите';
|
||||
$lang['toolbar_icon'] = 'Показване на икона в лентата с инструменти (ако не виждате бутона изчистете съдържанието на data/cache/* и кеша на браузера ';
|
||||
|
||||
$lang['sortkey'] = 'Сортиране на списъците с теми по';
|
||||
$lang['sortkey_o_cdate'] = 'дата на създаване';
|
||||
$lang['sortkey_o_mdate'] = 'дата на редактиране';
|
||||
$lang['sortkey_o_pagename'] = 'име на страница';
|
||||
$lang['sortkey_o_id'] = 'ID на страница';
|
||||
$lang['sortkey_o_ns'] = 'именно пространство';
|
||||
$lang['sortkey_o_title'] = 'заглавие';
|
||||
|
||||
$lang['sortorder'] = 'Сортиране';
|
||||
$lang['sortorder_o_ascending'] = 'възходящо';
|
||||
$lang['sortorder_o_descending'] = 'низходящо';
|
||||
|
||||
$lang['pagelist_flags'] = 'Форматиране на флагове за списъка с тагове (разделени със запетая, за наличните флагове вижте документацията на приставката Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Показване и на етикети от подименните пространства (count syntax)';
|
||||
|
||||
$lang['tags_list_css'] = 'Изберете стил, който да се прилага към списъка с етикети на страниците';
|
||||
$lang['tags_list_css_o_tags'] = 'стандартния';
|
||||
$lang['tags_list_css_o_tagstop'] = 'оптимален за списък от етикети над страницата';
|
18
lib/plugins/tag/lang/ckb/lang.php
Normal file
18
lib/plugins/tag/lang/ckb/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author qezwan <qezwan@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'تاگ';
|
||||
$lang['tags'] = 'تاگەکان';
|
||||
$lang['topic'] = 'بابەت';
|
||||
$lang['count'] = '#';
|
||||
$lang['toolbar_icon'] = 'دانانی تاگ-ڕستە';
|
||||
$lang['empty_output'] = 'دەرچوی بەتاڵ';
|
||||
|
||||
$lang['include'] = 'لەخۆدەگرێت';
|
||||
$lang['exclude'] = 'دەرکردن';
|
||||
$lang['use_and'] = 'بەکارهێنان و';
|
||||
$lang['no_tags'] = 'هیچ تاگێک نەدۆزرایەوە';
|
29
lib/plugins/tag/lang/ckb/settings.php
Normal file
29
lib/plugins/tag/lang/ckb/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author qezwan <qezwan@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'بۆشایی ناوی ئاسایی بۆ تاگەکان';
|
||||
$lang['toolbar_icon'] = 'پیشاندانی وێنۆکی شریتی ئامڕاز (زانیاری/حەشارگە/* و حەشارگەی وێبگەڕ ئەگەر پیشان نەدرا)';
|
||||
|
||||
$lang['sortkey'] = 'پۆلێنکردنی لیستەکانی بابەت بەپێی';
|
||||
$lang['sortkey_o_cdate'] = 'بەرواری دروست کردن';
|
||||
$lang['sortkey_o_mdate'] = 'دەستکاری بەروار';
|
||||
$lang['sortkey_o_pagename'] = 'ناوی پەڕە';
|
||||
$lang['sortkey_o_id'] = 'ناسنامەی پەڕە';
|
||||
$lang['sortkey_o_ns'] = 'بۆشایی ناو';
|
||||
$lang['sortkey_o_title'] = 'ناونیشان';
|
||||
|
||||
$lang['sortorder'] = 'ڕیزکردن لە ریزبەند';
|
||||
$lang['sortorder_o_ascending'] = 'بەرەو سەرەوە';
|
||||
$lang['sortorder_o_descending'] = 'بەرەو خوار';
|
||||
|
||||
$lang['pagelist_flags'] = 'فۆرماتکردنی ئاڵاکان بۆ لیستی تاگ (کۆما-جیاکراوە, بۆ ئاڵای بەردەست ببینە دۆکیومێنتەکان لە پیتەلیست پێوەکراو)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'هەروەها پێرستی تاگەکان لە ژێربۆشایی ناوەکانی بۆشایی ناوێکی تایبەت دیاریکراو (ڕستەسازی ژماردن)';
|
||||
|
||||
$lang['tags_list_css'] = 'هەڵبژاردنی شێوازی کارپێکراو بۆ لیستی تاگی لاپەڕەکان';
|
||||
$lang['tags_list_css_o_tags'] = 'شێوازی بنەڕەت';
|
||||
$lang['tags_list_css_o_tagstop'] = 'باشترکراوە بۆ لیستی تاگەکان لە سەرەوەی لاپەڕەکە';
|
22
lib/plugins/tag/lang/cs/lang.php
Normal file
22
lib/plugins/tag/lang/cs/lang.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Czech language file (UTF-8 encoding)
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Lukas Zapletal <lukas.zapletal@gmail.com>
|
||||
* @author Robert Surý <rsurycz@seznam.cz>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tagy';
|
||||
$lang['topic'] = 'Téma';
|
||||
$lang['count'] = 'Počet';
|
||||
$lang['toolbar_icon'] = 'Vlož Tag-Syntax';
|
||||
$lang['empty_output'] = 'Prázdný výstup';
|
||||
|
||||
$lang['include'] = 'Include';
|
||||
$lang['exclude'] = 'Exclude';
|
||||
$lang['use_and'] = 'Použít logické AND';
|
||||
$lang['no_tags'] = 'Nenalezeny žádné tagy';
|
31
lib/plugins/tag/lang/cs/settings.php
Normal file
31
lib/plugins/tag/lang/cs/settings.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Czech language file (UTF-8 encoding)
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Lukas Zapletal <lukas.zapletal at gmail dot com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Výchozí jmenný prostor pro tagy';
|
||||
$lang['toolbar_icon'] = 'Zobrazit toolbar ikonku (pokud se nezobrazuje, smažte data/cache/* a cache prohlížeče)';
|
||||
|
||||
$lang['sortkey'] = 'razení zápisků podle';
|
||||
$lang['sortkey_o_cdate'] = 'data vytvoření';
|
||||
$lang['sortkey_o_mdate'] = 'data modifikace';
|
||||
$lang['sortkey_o_pagename'] = 'názvu stránky';
|
||||
$lang['sortkey_o_id'] = 'ID stránky';
|
||||
$lang['sortkey_o_ns'] = 'jmenný prostor';
|
||||
$lang['sortkey_o_title'] = 'nadpis';
|
||||
|
||||
$lang['sortorder'] = 'pořadí';
|
||||
$lang['sortorder_o_ascending'] = 'vzestupné';
|
||||
$lang['sortorder_o_descending'] = 'sestupné';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formátovací flags pro list tagů (comma-separated, viz dostupné flags v dokumentaci pluginu pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'List také tags in podjmenných prostorů daného jmenného prostoru';
|
||||
|
||||
$lang['tags_list_css'] = 'Vyber styl aplikovaný na stránku seznam tagů ';
|
||||
$lang['tags_list_css_o_tags'] = 'výchozí styl';
|
||||
$lang['tags_list_css_o_tagstop'] = 'optimalizováno pro zobrazení seznamu tagů v horní části stránky';
|
20
lib/plugins/tag/lang/cy/lang.php
Normal file
20
lib/plugins/tag/lang/cy/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Alan Davies <ben.brynsadler@gmail.com>
|
||||
* @author diafol <ben.brynsadler@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tagiau';
|
||||
$lang['topic'] = 'Testun';
|
||||
$lang['count'] = 'Meintiau';
|
||||
$lang['toolbar_icon'] = 'Mewnosod Cystrawen-Tag';
|
||||
$lang['empty_output'] = 'Allbwn Gwag';
|
||||
|
||||
$lang['include'] = 'Cynnwys';
|
||||
$lang['exclude'] = 'Eithrio';
|
||||
$lang['use_and'] = 'Defnyddiwch resymeg AND';
|
||||
$lang['no_tags'] = 'Dim tagiau wedi\'u darganfod';
|
29
lib/plugins/tag/lang/cy/settings.php
Normal file
29
lib/plugins/tag/lang/cy/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Alan Davies <ben.brynsadler@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Namespace diofyn ar gyfer tagiau';
|
||||
$lang['toolbar_icon'] = 'Dangos eicon y bar offer (cliriwch data/cache/* a storfa eich porwr os \'dyw e ddim yn ymddangos)';
|
||||
|
||||
$lang['sortkey'] = 'trefnu rhestr testunau gan';
|
||||
$lang['sortkey_o_cdate'] = 'dyddiad creu';
|
||||
$lang['sortkey_o_mdate'] = 'dyddiad newid';
|
||||
$lang['sortkey_o_pagename'] = 'enw\'r dudalen';
|
||||
$lang['sortkey_o_id'] = 'ID tudalen';
|
||||
$lang['sortkey_o_ns'] = 'namespace';
|
||||
$lang['sortkey_o_title'] = 'teitl';
|
||||
|
||||
$lang['sortorder'] = 'trefn';
|
||||
$lang['sortorder_o_ascending'] = 'esgyn';
|
||||
$lang['sortorder_o_descending'] = 'disgyn';
|
||||
|
||||
$lang['pagelist_flags'] = 'Fflagiau fformatio ar gyfer y rhestr tagiau (gwahanu gan goma; ar gyfer fflagiau posib, gwelwch ddogfennaeth yr ategyn \'Pagelist\')';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Rhestrwch dagiau hefyd yn y subnamespaces o\'r namespace penodol (cystrawen cyfri) ';
|
||||
|
||||
$lang['tags_list_css'] = 'Dewis arddull i osod ar restr dagiau tudalennau';
|
||||
$lang['tags_list_css_o_tags'] = 'arddull ddiofyn';
|
||||
$lang['tags_list_css_o_tagstop'] = 'optimeiddiwyd am restr dagiau ar ben y dudalen';
|
20
lib/plugins/tag/lang/da/lang.php
Normal file
20
lib/plugins/tag/lang/da/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Søren Birk <soer9648@eucl.dk>
|
||||
* @author Jacob Palm <jacobpalmdk@icloud.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tags';
|
||||
$lang['topic'] = 'Emne';
|
||||
$lang['count'] = 'Mængde';
|
||||
$lang['toolbar_icon'] = 'Indsæt Tag-Syntaks';
|
||||
$lang['empty_output'] = 'Tomt Output';
|
||||
|
||||
$lang['include'] = 'Inkludér';
|
||||
$lang['exclude'] = 'Ekskludér';
|
||||
$lang['use_and'] = 'Brug logik AND';
|
||||
$lang['no_tags'] = 'Ingen tags fundet';
|
30
lib/plugins/tag/lang/da/settings.php
Normal file
30
lib/plugins/tag/lang/da/settings.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Søren Birk <soer9648@eucl.dk>
|
||||
* @author Jacob Palm <jacobpalmdk@icloud.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Standard navnerum for tags';
|
||||
$lang['toolbar_icon'] = 'Vis ikon for værktøjslinje (ryd data/cache/* og browser-cache, hvis den ikke vises)';
|
||||
|
||||
$lang['sortkey'] = 'sortér emneliste efter';
|
||||
$lang['sortkey_o_cdate'] = 'oprettelsesdato';
|
||||
$lang['sortkey_o_mdate'] = 'redigeringsdato';
|
||||
$lang['sortkey_o_pagename'] = 'sidenavn';
|
||||
$lang['sortkey_o_id'] = 'side-ID';
|
||||
$lang['sortkey_o_ns'] = 'navnerum';
|
||||
$lang['sortkey_o_title'] = 'titel';
|
||||
|
||||
$lang['sortorder'] = 'sorteringsorden';
|
||||
$lang['sortorder_o_ascending'] = 'stigende';
|
||||
$lang['sortorder_o_descending'] = 'faldende';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formateringsflag for tag-listen (kommasepareret - se dokumentationen for pagelist plugin, for tilgængelige flag)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'List også tags i under-navnerum for et specificeret navnerum (tæl syntaks)';
|
||||
|
||||
$lang['tags_list_css'] = 'Vælg stil der skal anvendes til tag-listen på sider';
|
||||
$lang['tags_list_css_o_tags'] = 'standard stil';
|
||||
$lang['tags_list_css_o_tagstop'] = 'optimeret til visning af tag-liste øverst på side';
|
20
lib/plugins/tag/lang/de-informal/lang.php
Normal file
20
lib/plugins/tag/lang/de-informal/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Sebastian Klemm <sebastian_klemm@freenet.de>
|
||||
* @author rnck <dokuwiki@rnck.de>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tags';
|
||||
$lang['topic'] = 'Thema';
|
||||
$lang['count'] = 'Menge';
|
||||
$lang['toolbar_icon'] = 'Tag-Syntax einfügen';
|
||||
$lang['empty_output'] = 'Leere Ausgabe';
|
||||
|
||||
$lang['include'] = 'Einschließen';
|
||||
$lang['exclude'] = 'Ausschließen';
|
||||
$lang['use_and'] = 'Logisches AND verwenden';
|
||||
$lang['no_tags'] = 'Keine Tags gefunden';
|
30
lib/plugins/tag/lang/de-informal/settings.php
Normal file
30
lib/plugins/tag/lang/de-informal/settings.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Sebastian Klemm <sebastian_klemm@freenet.de>
|
||||
* @author rnck <dokuwiki@rnck.de>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Standard-Namensraum für Tags';
|
||||
$lang['toolbar_icon'] = 'Toolbar-Symbol anzeigen (data/cache/* und den Browser-Cache löschen, wenn das Symbol nicht angezeigt wird)';
|
||||
|
||||
$lang['sortkey'] = 'Themenlisten sortieren nach:';
|
||||
$lang['sortkey_o_cdate'] = 'Erstellungsdatum';
|
||||
$lang['sortkey_o_mdate'] = 'Änderungsdatum';
|
||||
$lang['sortkey_o_pagename'] = 'Seitenname';
|
||||
$lang['sortkey_o_id'] = 'Seiten-ID';
|
||||
$lang['sortkey_o_ns'] = 'Namensraum';
|
||||
$lang['sortkey_o_title'] = 'Titel';
|
||||
|
||||
$lang['sortorder'] = 'Sortierrichtung';
|
||||
$lang['sortorder_o_ascending'] = 'aufsteigend';
|
||||
$lang['sortorder_o_descending'] = 'absteigend';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formatieroptionen für die Tagliste (kommasepariert, für eine Liste der verfügbaren Optionen siehe die Dokumentation des Pagelist Plugins)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Tags anzeigen, die in Subnamespaces von angegebeben Namespaces liegen (count syntax)';
|
||||
|
||||
$lang['tags_list_css'] = 'Wähle ein Aussehen für die Tag-Liste auf der Seite';
|
||||
$lang['tags_list_css_o_tags'] = 'Standardaussehen';
|
||||
$lang['tags_list_css_o_tagstop'] = 'Optimierte Tag-Liste für Seitenkopf';
|
22
lib/plugins/tag/lang/de/lang.php
Normal file
22
lib/plugins/tag/lang/de/lang.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
* @author Dominik Eckelmann <deckelmann@gmail.com>
|
||||
* @author Dennis Plöger <develop@dieploegers.de>
|
||||
* @author Dana <dannax3@gmx.de>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tags';
|
||||
$lang['topic'] = 'Thema';
|
||||
$lang['count'] = 'Menge';
|
||||
$lang['toolbar_icon'] = 'Tag-Syntax einfügen';
|
||||
$lang['empty_output'] = 'Leere Ausgabe';
|
||||
|
||||
$lang['include'] = 'Einschließen';
|
||||
$lang['exclude'] = 'Ausschließen';
|
||||
$lang['use_and'] = 'Logisches AND verwenden';
|
||||
$lang['no_tags'] = 'Keine Tags gefunden';
|
31
lib/plugins/tag/lang/de/settings.php
Normal file
31
lib/plugins/tag/lang/de/settings.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
* @author Padhie <develop@padhie.de>
|
||||
* @author rnck <dokuwiki@rnck.de>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Standard-Namensraum für Tags';
|
||||
$lang['toolbar_icon'] = 'Toolbar-Symbol anzeigen (data/cache/* und den Browser-Cache löschen, wenn das Symbol nicht angezeigt wird)';
|
||||
|
||||
$lang['sortkey'] = 'Themenlisten sortieren nach:';
|
||||
$lang['sortkey_o_cdate'] = 'Erstellungsdatum';
|
||||
$lang['sortkey_o_mdate'] = 'Änderungsdatum';
|
||||
$lang['sortkey_o_pagename'] = 'Seitenname';
|
||||
$lang['sortkey_o_id'] = 'Seiten-ID';
|
||||
$lang['sortkey_o_ns'] = 'Namensraum';
|
||||
$lang['sortkey_o_title'] = 'Titel';
|
||||
|
||||
$lang['sortorder'] = 'Sortierrichtung';
|
||||
$lang['sortorder_o_ascending'] = 'aufsteigend';
|
||||
$lang['sortorder_o_descending'] = 'absteigend';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formatieroptionen für die Tagliste (kommasepariert, für eine Liste der verfügbaren Optionen siehe die Dokumentation des Pagelist Plugins)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Tags anzeigen, die in Subnamespaces von angegebeben Namespaces liegen (count syntax)';
|
||||
|
||||
$lang['tags_list_css'] = 'Wähle ein Aussehen für die Tag-Liste auf der Seite';
|
||||
$lang['tags_list_css_o_tags'] = 'Standardaussehen';
|
||||
$lang['tags_list_css_o_tagstop'] = 'Optimierte Tag-Liste für Seitenkopf';
|
18
lib/plugins/tag/lang/el/lang.php
Normal file
18
lib/plugins/tag/lang/el/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Ετικέτα';
|
||||
$lang['tags'] = 'Ετικέτες';
|
||||
$lang['topic'] = 'Θέμα';
|
||||
$lang['count'] = 'Ποσότητα';
|
||||
$lang['toolbar_icon'] = 'Εισαγωγή ετικέτας-σύνταξης';
|
||||
$lang['empty_output'] = 'Άδεια εξόδου';
|
||||
|
||||
$lang['include'] = 'Συμπερίληψη';
|
||||
$lang['exclude'] = 'Εξαίρεση';
|
||||
$lang['use_and'] = 'Χρήση λογικής AND';
|
||||
$lang['no_tags'] = 'Δεν βρέθηκαν ετικέτες';
|
29
lib/plugins/tag/lang/el/settings.php
Normal file
29
lib/plugins/tag/lang/el/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Προεπιλεγμένος χώρος ονομάτων για ετικέτες';
|
||||
$lang['toolbar_icon'] = 'Εμφάνιση εικονιδίου γραμμής εργαλείων (εκκαθάριση "data/cache/*" και προσωρινή μνήμη του προγράμματος περιήγησης εάν δεν εμφανίζεται)';
|
||||
|
||||
$lang['sortkey'] = 'ταξινόμηση λιστών θεμάτων κατά';
|
||||
$lang['sortkey_o_cdate'] = 'ημερομηνία δημιουργίας';
|
||||
$lang['sortkey_o_mdate'] = 'ημερομηνία τροποποίησης';
|
||||
$lang['sortkey_o_pagename'] = 'όνομα σελίδας';
|
||||
$lang['sortkey_o_id'] = 'αναγνωριστικό σελίδας';
|
||||
$lang['sortkey_o_ns'] = 'namespace';
|
||||
$lang['sortkey_o_title'] = 'τίτλος';
|
||||
|
||||
$lang['sortorder'] = 'ταξινόμηση ταξινόμησης';
|
||||
$lang['sortorder_o_ascending'] = 'αύξουσα';
|
||||
$lang['sortorder_o_descending'] = 'φθίνουσα';
|
||||
|
||||
$lang['pagelist_flags'] = 'Μορφοποίηση σημαιών για τη λίστα ετικετών (διαχωρισμένα με κόμμα, για τις διαθέσιμες σημαίες δείτε την τεκμηρίωση της προσθήκης Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Λίστα επίσης ετικετών σε δευτερεύοντες χώρους ενός καθορισμένου χώρου ονομάτων (σύνταξη μέτρησης)';
|
||||
|
||||
$lang['tags_list_css'] = 'Επιλέξτε στυλ που εφαρμόζεται στη σελίδα\' λίστα ετικετών';
|
||||
$lang['tags_list_css_o_tags'] = 'προεπιλεγμένο στυλ';
|
||||
$lang['tags_list_css_o_tagstop'] = 'βελτιστοποιημένη για λίστα ετικετών στο επάνω μέρος της σελίδας';
|
23
lib/plugins/tag/lang/en/lang.php
Normal file
23
lib/plugins/tag/lang/en/lang.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* English language file
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
// custom language strings for the plugin
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tags';
|
||||
$lang['topic'] = 'Topic';
|
||||
$lang['count'] = 'Quantity';
|
||||
$lang['toolbar_icon'] = 'Insert Tag-Syntax';
|
||||
$lang['empty_output'] = 'Empty Output';
|
||||
|
||||
// search form of tagsearch syntax
|
||||
$lang['include'] = 'Include';
|
||||
$lang['exclude'] = 'Exclude';
|
||||
$lang['use_and'] = 'Use logic AND';
|
||||
$lang['no_tags'] = 'No tags found';
|
32
lib/plugins/tag/lang/en/settings.php
Normal file
32
lib/plugins/tag/lang/en/settings.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* English language file
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
*/
|
||||
|
||||
// for the configuration manager
|
||||
$lang['namespace'] = 'Default namespace for tags';
|
||||
$lang['toolbar_icon'] = 'Show toolbar icon (clear data/cache/* and browser cache if it\'s not displayed)';
|
||||
|
||||
$lang['sortkey'] = 'sort topic lists by';
|
||||
$lang['sortkey_o_cdate'] = 'creation date';
|
||||
$lang['sortkey_o_mdate'] = 'modification date';
|
||||
$lang['sortkey_o_pagename'] = 'page name';
|
||||
$lang['sortkey_o_id'] = 'page ID';
|
||||
$lang['sortkey_o_ns'] = 'namespace';
|
||||
$lang['sortkey_o_title'] = 'title';
|
||||
|
||||
$lang['sortorder'] = 'sort order';
|
||||
$lang['sortorder_o_ascending'] = 'ascending';
|
||||
$lang['sortorder_o_descending'] = 'descending';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formatting flags for the taglist (comma-separated, for available flags see the documentation of the Pagelist Plugin)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'List also tags in subnamespaces of a specified namespace (count syntax)';
|
||||
|
||||
$lang['tags_list_css'] = 'Choose style applied to pages\' tags list';
|
||||
$lang['tags_list_css_o_tags'] = 'default style';
|
||||
$lang['tags_list_css_o_tagstop'] = 'optimized for tags list at top of page';
|
19
lib/plugins/tag/lang/eo/lang.php
Normal file
19
lib/plugins/tag/lang/eo/lang.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Ljosxa <ka2pink@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Marko';
|
||||
$lang['tags'] = 'Markoj';
|
||||
$lang['topic'] = 'Temo';
|
||||
$lang['count'] = 'Kvanto';
|
||||
$lang['toolbar_icon'] = 'Enmeti Marko-sintakson';
|
||||
$lang['empty_output'] = 'Malplenigi Eligon';
|
||||
|
||||
$lang['include'] = 'Inkluzivi';
|
||||
$lang['exclude'] = 'Ekskluzivi';
|
||||
$lang['use_and'] = 'Uzi logikon AND';
|
||||
$lang['no_tags'] = 'Neniuj markoj trovitaj';
|
30
lib/plugins/tag/lang/eo/settings.php
Normal file
30
lib/plugins/tag/lang/eo/settings.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Ljosxa <ka2pink@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Kutima nomospaco por markoj';
|
||||
$lang['toolbar_icon'] = 'Vidigi ilaran ikonon (nuligu data/cache/* kaj foliumilan kasxmemoron se gxi ne aperis)';
|
||||
|
||||
$lang['sortkey'] = 'ordigi tem-liston laux';
|
||||
$lang['sortkey_o_cdate'] = 'dato de kreo';
|
||||
$lang['sortkey_o_mdate'] = 'dato de modifo';
|
||||
$lang['sortkey_o_pagename'] = 'nomo de pagxo';
|
||||
$lang['sortkey_o_id'] = 'pagxa ID';
|
||||
$lang['sortkey_o_ns'] = 'nomospaco';
|
||||
$lang['sortkey_o_title'] = 'temo';
|
||||
|
||||
$lang['sortorder'] = 'ordigo';
|
||||
$lang['sortorder_o_ascending'] = 'kreskanta';
|
||||
$lang['sortorder_o_descending'] = 'malkreskanta';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formatigaj flagoj por marko-listo (perkome disigita, uzataj flagoj vidu en priskribo de kromprogramo "Pagelist")';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Listigi ankaux markoj en subnomospacoj de indikita nomospaco ("count" sintakso)';
|
||||
|
||||
$lang['tags_list_css'] = 'Elektu stilon aplikitan al la listo de etikedoj de paĝoj';
|
||||
$lang['tags_list_css_o_tags'] = 'defaŭlta stilo';
|
||||
$lang['tags_list_css_o_tagstop'] = 'optimumigita por listo de etikedoj supre de paĝo';
|
21
lib/plugins/tag/lang/es/lang.php
Normal file
21
lib/plugins/tag/lang/es/lang.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Domingo Redal <docxml@gmail.com>
|
||||
* @author Digna González Otero <digna.gonzalezotero [at] gmail [dot] com>
|
||||
* @author Camilo Sampedro <sampedro1903@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Etiqueta';
|
||||
$lang['tags'] = 'Etiquetas';
|
||||
$lang['topic'] = 'Tema';
|
||||
$lang['count'] = 'Cantidad';
|
||||
$lang['toolbar_icon'] = 'Insertar sintaxis de etiqueta';
|
||||
$lang['empty_output'] = 'Salida vacía';
|
||||
|
||||
$lang['include'] = 'Incluir';
|
||||
$lang['exclude'] = 'Excluir';
|
||||
$lang['use_and'] = 'Use lógica AND';
|
||||
$lang['no_tags'] = 'Ninguna etiqueta encontrada';
|
31
lib/plugins/tag/lang/es/settings.php
Normal file
31
lib/plugins/tag/lang/es/settings.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Digna González Otero <digna.gonzalezotero [at] gmail [dot] com>
|
||||
* @author Camilo Sampedro <sampedro1903@gmail.com>
|
||||
* @author Domingo Redal <docxml@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Espacio de nombres por defecto para las etiquetas';
|
||||
$lang['toolbar_icon'] = 'Mostrar el ícono en la barra (borra data/cache/ y el caché del navegador si no es visible)';
|
||||
|
||||
$lang['sortkey'] = 'ordenar las listas de temas por';
|
||||
$lang['sortkey_o_cdate'] = 'fecha de creación';
|
||||
$lang['sortkey_o_mdate'] = 'fecha de modificación';
|
||||
$lang['sortkey_o_pagename'] = 'nombre de la página';
|
||||
$lang['sortkey_o_id'] = 'ID de la página';
|
||||
$lang['sortkey_o_ns'] = 'nombre de espacio';
|
||||
$lang['sortkey_o_title'] = 'título';
|
||||
|
||||
$lang['sortorder'] = 'tipo de ordenación';
|
||||
$lang['sortorder_o_ascending'] = 'ascendente';
|
||||
$lang['sortorder_o_descending'] = 'descendente';
|
||||
|
||||
$lang['pagelist_flags'] = 'Dándole formato para la lista de etiquetas (separadas por coma, para ver los banderas (flags) consultar la documentación del plugin)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Listar también etiquetas en subespacios de nombre en un espacio de nombre específico (recuento de sintaxis)';
|
||||
|
||||
$lang['tags_list_css'] = 'Elija el estilo aplicado a la página de lista de etiquetas';
|
||||
$lang['tags_list_css_o_tags'] = 'estilo por defecto';
|
||||
$lang['tags_list_css_o_tagstop'] = 'optimizado para la lista de etiquetas en la parte superior de la página';
|
19
lib/plugins/tag/lang/fa/lang.php
Normal file
19
lib/plugins/tag/lang/fa/lang.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author sam01 <m.sajad079@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'برچسب';
|
||||
$lang['tags'] = 'برچسبها';
|
||||
$lang['topic'] = 'موضوع';
|
||||
$lang['count'] = 'مقدار';
|
||||
$lang['toolbar_icon'] = 'درج نحوهٔ ترکیب برچسب';
|
||||
$lang['empty_output'] = 'خروجی خالی';
|
||||
|
||||
$lang['include'] = 'عبارتند از';
|
||||
$lang['exclude'] = 'محروم کردن';
|
||||
$lang['use_and'] = 'از منطق AND استفاده کنید';
|
||||
$lang['no_tags'] = 'برچسبی یافت نشد';
|
29
lib/plugins/tag/lang/fa/settings.php
Normal file
29
lib/plugins/tag/lang/fa/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author sam01 <m.sajad079@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'فضای نام پیشفرض برای برچسبها';
|
||||
$lang['toolbar_icon'] = 'آیکون نمایش نوار ابزار (پاک کردن اطلاعات/کش/ * و کش مرورگر اگر چیزی نمایش داده نمیشود)';
|
||||
|
||||
$lang['sortkey'] = 'مرتب سازی لیست موضوع توسط';
|
||||
$lang['sortkey_o_cdate'] = 'تاریخ ایجاد';
|
||||
$lang['sortkey_o_mdate'] = 'تاریخ اصلاح';
|
||||
$lang['sortkey_o_pagename'] = 'نام صفحه';
|
||||
$lang['sortkey_o_id'] = 'آیدی صفحه';
|
||||
$lang['sortkey_o_ns'] = 'فضای نام';
|
||||
$lang['sortkey_o_title'] = 'عنوان';
|
||||
|
||||
$lang['sortorder'] = 'مرتب سازی سفارشی';
|
||||
$lang['sortorder_o_ascending'] = 'صعودی';
|
||||
$lang['sortorder_o_descending'] = 'نزولی';
|
||||
|
||||
$lang['pagelist_flags'] = 'پرچم قالب بندی برای لیست برچسبها (جداکردن با کاما، برای پرچمهای موجود اسناد لیست صفحهای پلاگین را ببینید)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'لیست برچسبها در فضاهای فرعی از یک فضای نام خاص (تعداد نحوهٔ ترکیب)';
|
||||
|
||||
$lang['tags_list_css'] = 'انتخاب سبک اعمال شدهی صفحات \' لیست برچسبها';
|
||||
$lang['tags_list_css_o_tags'] = 'سبک پیشفرض';
|
||||
$lang['tags_list_css_o_tagstop'] = 'بهینه سازی شده برای لیست برچسبها در بالای صفحه';
|
18
lib/plugins/tag/lang/fi/lang.php
Normal file
18
lib/plugins/tag/lang/fi/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tunniste';
|
||||
$lang['tags'] = 'Tunnisteet';
|
||||
$lang['topic'] = 'Aihe';
|
||||
$lang['count'] = 'Määrä';
|
||||
$lang['toolbar_icon'] = 'Lisää tunniste-syntakse';
|
||||
$lang['empty_output'] = 'Tyhjä tulos';
|
||||
|
||||
$lang['include'] = 'Sisällytä';
|
||||
$lang['exclude'] = 'Sulje pois';
|
||||
$lang['use_and'] = 'Käytä logiikkaa JA';
|
||||
$lang['no_tags'] = 'Tunnisteita ei löytynyt';
|
29
lib/plugins/tag/lang/fi/settings.php
Normal file
29
lib/plugins/tag/lang/fi/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Tunnisteiden oletusnimitila';
|
||||
$lang['toolbar_icon'] = 'Näytä työkalurivin kuvake (tyhjennä data/cache/* ja selaimen välimuisti, jos sitä ei näy)';
|
||||
|
||||
$lang['sortkey'] = 'lajittele aiheluettelot';
|
||||
$lang['sortkey_o_cdate'] = 'luomispäivä';
|
||||
$lang['sortkey_o_mdate'] = 'muokkauspäivä';
|
||||
$lang['sortkey_o_pagename'] = 'sivun nimi';
|
||||
$lang['sortkey_o_id'] = 'sivun tunnus';
|
||||
$lang['sortkey_o_ns'] = 'nimitila';
|
||||
$lang['sortkey_o_title'] = 'otsikko';
|
||||
|
||||
$lang['sortorder'] = 'lajittelujärjestys';
|
||||
$lang['sortorder_o_ascending'] = 'nouseva';
|
||||
$lang['sortorder_o_descending'] = 'laskeva';
|
||||
|
||||
$lang['pagelist_flags'] = 'Tagilistan lippujen muotoilu (pilkuilla erotettu, saatavilla olevat liput katso sivulista-laajennuksen ohjeista)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Luettele myös tunnisteet määritetyn nimiavaruuden alitunnustiloissa (laskesyntaksi)';
|
||||
|
||||
$lang['tags_list_css'] = 'Valitse sivujen tunnisteiden luetteloon käytetty tyyli';
|
||||
$lang['tags_list_css_o_tags'] = 'oletustyyli';
|
||||
$lang['tags_list_css_o_tagstop'] = 'optimoitu tunnisteiden luetteloon sivun yläosassa';
|
20
lib/plugins/tag/lang/fr/lang.php
Normal file
20
lib/plugins/tag/lang/fr/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Nicolas Friedli <nicolas@theologique.ch>
|
||||
* @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Étiquette';
|
||||
$lang['tags'] = 'Étiquettes';
|
||||
$lang['topic'] = 'Sujet';
|
||||
$lang['count'] = 'Quantité';
|
||||
$lang['toolbar_icon'] = 'Insérer des étiquettes';
|
||||
$lang['empty_output'] = 'Pas de résultat';
|
||||
|
||||
$lang['include'] = 'Inclure';
|
||||
$lang['exclude'] = 'Exclure';
|
||||
$lang['use_and'] = 'Utiliser la logique AND';
|
||||
$lang['no_tags'] = 'Aucune étiquette trouvée';
|
33
lib/plugins/tag/lang/fr/settings.php
Normal file
33
lib/plugins/tag/lang/fr/settings.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Damien Raude-Morvan <drazzib@drazzib.com>
|
||||
* @author Stanislas Reltgen <stanislas@reltgen.net>
|
||||
* @author NicolasFriedli <nicolas@theologique.ch>
|
||||
* @author Olivier Humbert <trebmuh@tuxfamily.org>
|
||||
* @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Dossier par défaut pour les étiquettes';
|
||||
$lang['toolbar_icon'] = 'Afficher l\'icône dans la barre d\'outils (purger data/cache/* et le cache du navigateur si il n\'apparait pas)';
|
||||
|
||||
$lang['sortkey'] = 'trier par :';
|
||||
$lang['sortkey_o_cdate'] = 'date de création';
|
||||
$lang['sortkey_o_mdate'] = 'date de modification';
|
||||
$lang['sortkey_o_pagename'] = 'nom de la page';
|
||||
$lang['sortkey_o_id'] = 'ID de la page';
|
||||
$lang['sortkey_o_ns'] = 'catégorie';
|
||||
$lang['sortkey_o_title'] = 'titre';
|
||||
|
||||
$lang['sortorder'] = 'ordre';
|
||||
$lang['sortorder_o_ascending'] = 'croissant';
|
||||
$lang['sortorder_o_descending'] = 'décroissant';
|
||||
|
||||
$lang['pagelist_flags'] = 'Paramètres d\'affichage pour lister les pages (séparés par des virgules, pour la liste des paramètres voir la documentation du greffon pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Lister les étiquettes présentes aussi dans les sous-dossiers (syntaxe count)';
|
||||
|
||||
$lang['tags_list_css'] = 'Style appliqué à la liste de étiquettes des pages';
|
||||
$lang['tags_list_css_o_tags'] = 'style par défaut';
|
||||
$lang['tags_list_css_o_tagstop'] = 'optimisé pour les listes d\'étiquettes en haut de page';
|
18
lib/plugins/tag/lang/he/lang.php
Normal file
18
lib/plugins/tag/lang/he/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'תייג';
|
||||
$lang['tags'] = 'תגים';
|
||||
$lang['topic'] = 'נושא';
|
||||
$lang['count'] = 'כַּמוּת';
|
||||
$lang['toolbar_icon'] = 'הוסף תחביר תג';
|
||||
$lang['empty_output'] = 'פלט ריק';
|
||||
|
||||
$lang['include'] = 'לִכלוֹל';
|
||||
$lang['exclude'] = 'אל תכלול';
|
||||
$lang['use_and'] = 'השתמש בהיגיון AND';
|
||||
$lang['no_tags'] = 'לא נמצאו תגים';
|
29
lib/plugins/tag/lang/he/settings.php
Normal file
29
lib/plugins/tag/lang/he/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'מרחב שמות ברירת מחדל לתגים';
|
||||
$lang['toolbar_icon'] = 'הצג את סמל סרגל הכלים (נקה "data/cache/*" ומטמון הדפדפן אם הוא לא מוצג)';
|
||||
|
||||
$lang['sortkey'] = 'מיין רשימות נושאים לפי';
|
||||
$lang['sortkey_o_cdate'] = 'תאריך יצירה';
|
||||
$lang['sortkey_o_mdate'] = 'תאריך שינוי';
|
||||
$lang['sortkey_o_pagename'] = 'שם העמוד';
|
||||
$lang['sortkey_o_id'] = 'מזהה דף';
|
||||
$lang['sortkey_o_ns'] = 'מרחב שמות';
|
||||
$lang['sortkey_o_title'] = 'כותרת';
|
||||
|
||||
$lang['sortorder'] = 'סדר מיון';
|
||||
$lang['sortorder_o_ascending'] = 'עולה';
|
||||
$lang['sortorder_o_descending'] = 'יורד';
|
||||
|
||||
$lang['pagelist_flags'] = 'עיצוב דגלים עבור רשימת התגים (מופרדים בפסיקים, לקבלת דגלים זמינים עיין בתיעוד של תוסף ה- Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'רשום גם תגים במרחבי משנה של מרחב שמות מוגדר (תחביר ספירה)';
|
||||
|
||||
$lang['tags_list_css'] = 'בחר סגנון שהוחל על רשימת התגים של הדפים';
|
||||
$lang['tags_list_css_o_tags'] = 'סגנון ברירת מחדל';
|
||||
$lang['tags_list_css_o_tagstop'] = 'מותאם לרשימת התגים בראש העמוד';
|
18
lib/plugins/tag/lang/hi/lang.php
Normal file
18
lib/plugins/tag/lang/hi/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'टैग';
|
||||
$lang['tags'] = 'टैग';
|
||||
$lang['topic'] = 'विषय';
|
||||
$lang['count'] = 'मात्रा';
|
||||
$lang['toolbar_icon'] = 'टैग-सिंटैक्स डालें';
|
||||
$lang['empty_output'] = 'खाली आउटपुट';
|
||||
|
||||
$lang['include'] = 'शामिल';
|
||||
$lang['exclude'] = 'निकालना';
|
||||
$lang['use_and'] = 'तर्क का उपयोग करें AND';
|
||||
$lang['no_tags'] = 'कोई टैग नहीं मिला';
|
29
lib/plugins/tag/lang/hi/settings.php
Normal file
29
lib/plugins/tag/lang/hi/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'टैग्स के लिए डिफॉल्ट नेमस्पेस';
|
||||
$lang['toolbar_icon'] = 'टूलबार आइकन दिखाएं (स्पष्ट data/cache/* और ब्राउज़र कैश यदि यह प्रदर्शित नहीं है)';
|
||||
|
||||
$lang['sortkey'] = 'सॉर्ट टॉपिक लिस्ट बाय';
|
||||
$lang['sortkey_o_cdate'] = 'निर्माण तिथि';
|
||||
$lang['sortkey_o_mdate'] = 'संशोधन तिथि';
|
||||
$lang['sortkey_o_pagename'] = 'पेज नाम';
|
||||
$lang['sortkey_o_id'] = 'पेज ID';
|
||||
$lang['sortkey_o_ns'] = 'नेमस्पेस';
|
||||
$lang['sortkey_o_title'] = 'शीर्षक';
|
||||
|
||||
$lang['sortorder'] = 'सॉर्ट ऑर्डर';
|
||||
$lang['sortorder_o_ascending'] = 'आरोही';
|
||||
$lang['sortorder_o_descending'] = 'अवरोही';
|
||||
|
||||
$lang['pagelist_flags'] = 'टैगलिस्ट के लिए झंडे का प्रारूपण (अल्पविराम से अलग किए गए, उपलब्ध झंडे के लिए Pagelist Plugin) का प्रलेखन देखें ';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'एक निर्दिष्ट नामस्थान (गिनती सिंटैक्स) के उप-नामों में भी टैग';
|
||||
|
||||
$lang['tags_list_css'] = 'पृष्ठों की टैग सूची में लागू शैली चुनें';
|
||||
$lang['tags_list_css_o_tags'] = 'डिफ़ॉल्ट शैली';
|
||||
$lang['tags_list_css_o_tagstop'] = 'पृष्ठ के शीर्ष पर टैग सूची के लिए अनुकूलित';
|
19
lib/plugins/tag/lang/hr/lang.php
Normal file
19
lib/plugins/tag/lang/hr/lang.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Davor Turkalj <turki.bsc@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Oznaka';
|
||||
$lang['tags'] = 'Oznake';
|
||||
$lang['topic'] = 'Teme';
|
||||
$lang['count'] = 'Količina';
|
||||
$lang['toolbar_icon'] = 'Ubaci sintaksu oznake';
|
||||
$lang['empty_output'] = 'Prazan izlaz';
|
||||
|
||||
$lang['include'] = 'Uključi';
|
||||
$lang['exclude'] = 'Izuzmi';
|
||||
$lang['use_and'] = 'Koristi logiku AND';
|
||||
$lang['no_tags'] = 'Nema oznaka';
|
29
lib/plugins/tag/lang/hr/settings.php
Normal file
29
lib/plugins/tag/lang/hr/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Davor Turkalj <turki.bsc@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Podrazumijevani imenski prostor za oznake';
|
||||
$lang['toolbar_icon'] = 'Prikaži ikonu na alatnoj traci (očisti data/cache/* i priručnu pohranu preglednika ako se ne prikazuje)';
|
||||
|
||||
$lang['sortkey'] = 'poredaj listu tema po';
|
||||
$lang['sortkey_o_cdate'] = 'datum kreiranja';
|
||||
$lang['sortkey_o_mdate'] = 'datum promjene';
|
||||
$lang['sortkey_o_pagename'] = 'ime stranice';
|
||||
$lang['sortkey_o_id'] = 'oznaka stranice';
|
||||
$lang['sortkey_o_ns'] = 'imenski prostor';
|
||||
$lang['sortkey_o_title'] = 'naslov';
|
||||
|
||||
$lang['sortorder'] = 'poredak';
|
||||
$lang['sortorder_o_ascending'] = 'rastući';
|
||||
$lang['sortorder_o_descending'] = 'padajući';
|
||||
|
||||
$lang['pagelist_flags'] = 'zastavice oblikovanja za listu oznaka (zarezom odvojene, za listu dostupnih zastavica vidi dokumentaciju dodatka pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Prikaži također oznake iz pod-imeničkih prostora specificiranog imeničkog prostora';
|
||||
|
||||
$lang['tags_list_css'] = 'Odaberi stil primijenjen na liste oznaka';
|
||||
$lang['tags_list_css_o_tags'] = 'podrazumijevani stil';
|
||||
$lang['tags_list_css_o_tagstop'] = 'optimirano za listu oznaka na vrhu stranice';
|
19
lib/plugins/tag/lang/hu/lang.php
Normal file
19
lib/plugins/tag/lang/hu/lang.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Marina Vladi <deldadam@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Címké';
|
||||
$lang['tags'] = 'Címkék';
|
||||
$lang['topic'] = 'Téma';
|
||||
$lang['count'] = 'Mennyiség';
|
||||
$lang['toolbar_icon'] = 'Címkeszintaxis beillesztése';
|
||||
$lang['empty_output'] = 'Üres kimenet';
|
||||
|
||||
$lang['include'] = 'Beleértve';
|
||||
$lang['exclude'] = 'Kivéve';
|
||||
$lang['use_and'] = 'Használja a logikát AND';
|
||||
$lang['no_tags'] = 'Nincsenek címkék';
|
31
lib/plugins/tag/lang/hu/settings.php
Normal file
31
lib/plugins/tag/lang/hu/settings.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Norbert Csík <norbert.csik@gmail.com>
|
||||
* @author Marina Vladi <deldadam@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Címkék alapértelmezett névtere';
|
||||
$lang['toolbar_icon'] = 'Ikon megjelenítése eszközsoron (töröljük az adat-* és böngésző gyorsítótárat, ha nem jelenne meg)';
|
||||
|
||||
$lang['sortkey'] = 'Témalista rendezési módja';
|
||||
$lang['sortkey_o_cdate'] = 'készítés dátuma';
|
||||
$lang['sortkey_o_mdate'] = 'módosítás dátuma';
|
||||
$lang['sortkey_o_pagename'] = 'oldalnév';
|
||||
$lang['sortkey_o_id'] = 'oldalazonosító (ID)';
|
||||
$lang['sortkey_o_ns'] = 'névtér';
|
||||
$lang['sortkey_o_title'] = 'cím';
|
||||
|
||||
$lang['sortorder'] = 'Rendezés iránya';
|
||||
$lang['sortorder_o_ascending'] = 'növekvő';
|
||||
$lang['sortorder_o_descending'] = 'csökkenő';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formátumozó beállítások a címkelistához (vesszővel elválasztva, az elérhető beállításokat nézzük meg a pagelist bővítmény dokumentációjában)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Adott névtér alnévtereiben szereplő címkék listázása (számláló szintaxis)';
|
||||
|
||||
$lang['tags_list_css'] = 'Válassza ki az oldalak címkék listájára alkalmazott stílust';
|
||||
$lang['tags_list_css_o_tags'] = 'alapértelmezett stílus';
|
||||
$lang['tags_list_css_o_tagstop'] = 'címkékhez optimalizált oldal tetején';
|
18
lib/plugins/tag/lang/id/lang.php
Normal file
18
lib/plugins/tag/lang/id/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tag';
|
||||
$lang['topic'] = 'Topik';
|
||||
$lang['count'] = 'Kuantitas';
|
||||
$lang['toolbar_icon'] = 'Sisipkan Sintaksis Tag';
|
||||
$lang['empty_output'] = 'Output Kosong';
|
||||
|
||||
$lang['include'] = 'Sertakan';
|
||||
$lang['exclude'] = 'Mengecualikan';
|
||||
$lang['use_and'] = 'Gunakan logika AND';
|
||||
$lang['no_tags'] = 'Tidak ditemukan tag';
|
29
lib/plugins/tag/lang/id/settings.php
Normal file
29
lib/plugins/tag/lang/id/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Ruang nama default untuk tag';
|
||||
$lang['toolbar_icon'] = 'Tampilkan ikon toolbar (hapus data/cache/* dan cache browser jika tidak ditampilkan)';
|
||||
|
||||
$lang['sortkey'] = 'urutkan daftar topik berdasarkan';
|
||||
$lang['sortkey_o_cdate'] = 'tanggal pembuatan';
|
||||
$lang['sortkey_o_mdate'] = 'tanggal modifikasi';
|
||||
$lang['sortkey_o_pagename'] = 'nama halaman';
|
||||
$lang['sortkey_o_id'] = 'ID halaman';
|
||||
$lang['sortkey_o_ns'] = 'ruang nama';
|
||||
$lang['sortkey_o_title'] = 'judul';
|
||||
|
||||
$lang['sortorder'] = 'tata urutan';
|
||||
$lang['sortorder_o_ascending'] = 'naik';
|
||||
$lang['sortorder_o_descending'] = 'turun';
|
||||
|
||||
$lang['pagelist_flags'] = 'Memformat flag untuk daftar tag (dipisahkan koma, untuk flag yang tersedia lihat dokumentasi dari Plugin Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Daftar juga tag dalam ruang subnama dari ruang nama tertentu (sintaks hitung)';
|
||||
|
||||
$lang['tags_list_css'] = 'Pilih gaya yang diterapkan ke halaman\' daftar tag';
|
||||
$lang['tags_list_css_o_tags'] = 'gaya standar';
|
||||
$lang['tags_list_css_o_tagstop'] = 'dioptimalkan untuk daftar tag di bagian atas halaman';
|
18
lib/plugins/tag/lang/it/lang.php
Normal file
18
lib/plugins/tag/lang/it/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tag';
|
||||
$lang['topic'] = 'Argomento';
|
||||
$lang['count'] = 'Quantità';
|
||||
$lang['toolbar_icon'] = 'Inserisci la sintassi tag';
|
||||
$lang['empty_output'] = 'Output vuoto';
|
||||
|
||||
$lang['include'] = 'Includi';
|
||||
$lang['exclude'] = 'Escludi';
|
||||
$lang['use_and'] = 'Usa logica AND';
|
||||
$lang['no_tags'] = 'Nessun tag trovato';
|
29
lib/plugins/tag/lang/it/settings.php
Normal file
29
lib/plugins/tag/lang/it/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
*
|
||||
* @author Roberto Bellingeri <bellingeri@netguru.it>
|
||||
*/
|
||||
$lang['namespace'] = 'Namespace predefinito per i tag';
|
||||
$lang['toolbar_icon'] = 'Mostra l\'icona della barra degli strumenti (cancella dati/cache/* e la cache del browser se non viene visualizzata)';
|
||||
|
||||
$lang['sortkey'] = 'ordina gli elenchi di argomenti per';
|
||||
$lang['sortkey_o_cdate'] = 'data di creazione';
|
||||
$lang['sortkey_o_mdate'] = 'data di modifica';
|
||||
$lang['sortkey_o_pagename'] = 'nome della pagina';
|
||||
$lang['sortkey_o_id'] = 'ID della pagina';
|
||||
$lang['sortkey_o_ns'] = 'namespace';
|
||||
$lang['sortkey_o_title'] = 'titolo';
|
||||
|
||||
$lang['sortorder'] = 'ordinamento';
|
||||
$lang['sortorder_o_ascending'] = 'crescente';
|
||||
$lang['sortorder_o_descending'] = 'decrescente';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formattazione dei flag per l\'elenco di tag (separati da virgola, per i flag disponibili vedere la documentazione del plug-in Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Elenca anche i tag nei sottomenu di uno spazio dei nomi specificato (sintassi conteggio)';
|
||||
|
||||
$lang['tags_list_css'] = 'Scegli lo stile applicato all\'elenco dei tag delle pagine';
|
||||
$lang['tags_list_css_o_tags'] = 'stile predefinito';
|
||||
$lang['tags_list_css_o_tagstop'] = 'ottimizzato per l\'elenco di tag nella parte superiore della pagina';
|
20
lib/plugins/tag/lang/ja/lang.php
Normal file
20
lib/plugins/tag/lang/ja/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Ikuo Obataya <cxx05051@nifty.com>
|
||||
* @author Hideaki SAWADA <chuno@live.jp>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'タグ';
|
||||
$lang['tags'] = 'タグ';
|
||||
$lang['topic'] = 'トピック';
|
||||
$lang['count'] = '数量';
|
||||
$lang['toolbar_icon'] = 'タグ構文の挿入';
|
||||
$lang['empty_output'] = '空の出力';
|
||||
|
||||
$lang['include'] = '含む';
|
||||
$lang['exclude'] = '除外する';
|
||||
$lang['use_and'] = 'ロジック AND 検索';
|
||||
$lang['no_tags'] = 'タグがありません';
|
30
lib/plugins/tag/lang/ja/settings.php
Normal file
30
lib/plugins/tag/lang/ja/settings.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Ikuo Obataya <cxx05051@nifty.com>
|
||||
* @author Hideaki SAWADA <chuno@live.jp>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'タグのデフォルト名前空間';
|
||||
$lang['toolbar_icon'] = 'ツールバーボタンを表示(表示されない場合、data/cache/* とブラウザキャッシュを削除)';
|
||||
|
||||
$lang['sortkey'] = 'topic 一覧のソート基準';
|
||||
$lang['sortkey_o_cdate'] = '作成日';
|
||||
$lang['sortkey_o_mdate'] = '更新日';
|
||||
$lang['sortkey_o_pagename'] = 'ページ名';
|
||||
$lang['sortkey_o_id'] = 'ページ ID';
|
||||
$lang['sortkey_o_ns'] = '名前空間';
|
||||
$lang['sortkey_o_title'] = 'タイトル';
|
||||
|
||||
$lang['sortorder'] = 'ソート順';
|
||||
$lang['sortorder_o_ascending'] = '昇順';
|
||||
$lang['sortorder_o_descending'] = '降順';
|
||||
|
||||
$lang['pagelist_flags'] = 'タグリストの表示フラグ(カンマ区切り。使用可能フラグは pagelist プラグインを参照)';
|
||||
|
||||
$lang['list_tags_of_subns'] = '指定名前空間の下位の名前空間のタグも一覧に含む(count 構文)';
|
||||
|
||||
$lang['tags_list_css'] = 'ページタグ一覧に適用されるスタイルを選択してください。';
|
||||
$lang['tags_list_css_o_tags'] = 'デフォルトスタイル';
|
||||
$lang['tags_list_css_o_tagstop'] = 'ページ上部配置に最適化';
|
20
lib/plugins/tag/lang/ko/lang.php
Normal file
20
lib/plugins/tag/lang/ko/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Myeongjin <aranet100@gmail.com>
|
||||
* @author dryoo <dryoo@live.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = '태그';
|
||||
$lang['tags'] = '태그';
|
||||
$lang['topic'] = '주제';
|
||||
$lang['count'] = '수량';
|
||||
$lang['toolbar_icon'] = '태그 문법 넣기';
|
||||
$lang['empty_output'] = '빈 출력';
|
||||
|
||||
$lang['include'] = '포함';
|
||||
$lang['exclude'] = '제외';
|
||||
$lang['use_and'] = '논리 AND 사용';
|
||||
$lang['no_tags'] = '찾은 태그 없음';
|
29
lib/plugins/tag/lang/ko/settings.php
Normal file
29
lib/plugins/tag/lang/ko/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Myeongjin <aranet100@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = '태그에 대한 기본 이름공간';
|
||||
$lang['toolbar_icon'] = '도구 모음 아이콘 보이기 (표시되지 않으면 data/cache/* 와 브라우저 캐시를 지우세요)';
|
||||
|
||||
$lang['sortkey'] = '주제 목록 정렬 기준';
|
||||
$lang['sortkey_o_cdate'] = '만든 날짜';
|
||||
$lang['sortkey_o_mdate'] = '수정한 날짜';
|
||||
$lang['sortkey_o_pagename'] = '문서 이름';
|
||||
$lang['sortkey_o_id'] = '문서 ID';
|
||||
$lang['sortkey_o_ns'] = '이름공간';
|
||||
$lang['sortkey_o_title'] = '제목';
|
||||
|
||||
$lang['sortorder'] = '정렬 순서';
|
||||
$lang['sortorder_o_ascending'] = '오름차순';
|
||||
$lang['sortorder_o_descending'] = '내림차순';
|
||||
|
||||
$lang['pagelist_flags'] = '태그 목록에 대한 서식 플래그 (쉼표로 구분, 사용할 수 있는 플래그에 대해서는 Pagelist 플러그인의 설명문서를 보세요)';
|
||||
|
||||
$lang['list_tags_of_subns'] = '지정된 이름공간의 하위 이름공간에 있는 태그도 나열 (개수 문법)';
|
||||
|
||||
$lang['tags_list_css'] = '문서의 태그 목록에 적용할 스타일 선택';
|
||||
$lang['tags_list_css_o_tags'] = '기본 스타일';
|
||||
$lang['tags_list_css_o_tagstop'] = '문서 위에 있는 태그 목록에 최적화';
|
20
lib/plugins/tag/lang/nl/lang.php
Normal file
20
lib/plugins/tag/lang/nl/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Gerrit Uitslag <klapinklapin@gmail.com>
|
||||
* @author Joachim David <joachim.david@teka-infopilots.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tags';
|
||||
$lang['topic'] = 'Onderwerp';
|
||||
$lang['count'] = 'Hoeveelheid';
|
||||
$lang['toolbar_icon'] = 'Tag-syntax invoegen';
|
||||
$lang['empty_output'] = 'Uitvoer leegmaken';
|
||||
|
||||
$lang['include'] = 'Inclusief';
|
||||
$lang['exclude'] = 'Exclusief';
|
||||
$lang['use_and'] = 'Gebruik logica AND';
|
||||
$lang['no_tags'] = 'Geen tags gevonden';
|
31
lib/plugins/tag/lang/nl/settings.php
Normal file
31
lib/plugins/tag/lang/nl/settings.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Gerrit Uitslag <klapinklapin@gmail.com>
|
||||
* @author Peter van Diest <peter.van.diest@xs4all.nl>
|
||||
* @author Joachim David <joachim.david@teka-infopilots.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Standaard namespace voor tags';
|
||||
$lang['toolbar_icon'] = 'Toon knop in de werkbalk (leeg data/cache/* en browser cache als hij niet wordt getoond)';
|
||||
|
||||
$lang['sortkey'] = 'sorteer onderwerpenlijsten op';
|
||||
$lang['sortkey_o_cdate'] = 'aanmaakdatum';
|
||||
$lang['sortkey_o_mdate'] = 'bewerkdatum';
|
||||
$lang['sortkey_o_pagename'] = 'paginanaam';
|
||||
$lang['sortkey_o_id'] = 'pagina-id';
|
||||
$lang['sortkey_o_ns'] = 'namespace';
|
||||
$lang['sortkey_o_title'] = 'titel';
|
||||
|
||||
$lang['sortorder'] = 'sorteervolgorde';
|
||||
$lang['sortorder_o_ascending'] = 'oplopend';
|
||||
$lang['sortorder_o_descending'] = 'aflopend';
|
||||
|
||||
$lang['pagelist_flags'] = 'Opmaakvlaggen voor de taglijst (gescheiden door komma\'s, voor beschikbare vlaggen zie documentatie van de Pagelist plugin)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Als er op een specifieke namespace wordt gezocht, geef dan in de lijst ook tags uit subnamespaces van deze specifieke namespace (count syntax)';
|
||||
|
||||
$lang['tags_list_css'] = 'Kies een stijl voor de lijst van tags voor de pagina';
|
||||
$lang['tags_list_css_o_tags'] = 'standaardstijl';
|
||||
$lang['tags_list_css_o_tagstop'] = 'geoptimaliseerd voor een lijst van tags bovenaan de pagina';
|
18
lib/plugins/tag/lang/pl/lang.php
Normal file
18
lib/plugins/tag/lang/pl/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tagi';
|
||||
$lang['topic'] = 'Temat';
|
||||
$lang['count'] = 'Ilość';
|
||||
$lang['toolbar_icon'] = 'Wstaw składnię tagu';
|
||||
$lang['empty_output'] = 'Puste wyjście';
|
||||
|
||||
$lang['include'] = 'Uwzględnić';
|
||||
$lang['exclude'] = 'Wykluczyć';
|
||||
$lang['use_and'] = 'Użyj logiki AND';
|
||||
$lang['no_tags'] = 'Nie znaleziono tagów';
|
29
lib/plugins/tag/lang/pl/settings.php
Normal file
29
lib/plugins/tag/lang/pl/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Bartek S <sadupl@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Domyślna przestrzeń nazw dla tagów';
|
||||
$lang['toolbar_icon'] = 'Pokaż ikonę paska narzędzi (wyczyść dane / pamięć podręczną / * i pamięć podręczną przeglądarki, jeśli nie są wyświetlane)';
|
||||
|
||||
$lang['sortkey'] = 'sortuj listy tematów według';
|
||||
$lang['sortkey_o_cdate'] = 'data utworzenia';
|
||||
$lang['sortkey_o_mdate'] = 'data modyfikacji';
|
||||
$lang['sortkey_o_pagename'] = 'nazwa strony';
|
||||
$lang['sortkey_o_id'] = 'ID strony';
|
||||
$lang['sortkey_o_ns'] = 'przestrzeń nazw';
|
||||
$lang['sortkey_o_title'] = 'tytuł';
|
||||
|
||||
$lang['sortorder'] = 'porządek sortowania';
|
||||
$lang['sortorder_o_ascending'] = 'rosnąco';
|
||||
$lang['sortorder_o_descending'] = 'malejąco';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formatowanie flag dla taglist (oddzielone przecinkami, dostępne flagi znajdują się w dokumentacji wtyczki Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Wyświetl także tagi w podprzestrzeniach określonej przestrzeni nazw (składnia licznika)';
|
||||
|
||||
$lang['tags_list_css'] = 'Wybierz styl zastosowany do stron \' lista tagów';
|
||||
$lang['tags_list_css_o_tags'] = 'domyślny styl';
|
||||
$lang['tags_list_css_o_tagstop'] = 'zoptymalizowany pod kątem listy tagów u góry strony';
|
18
lib/plugins/tag/lang/pt-br/lang.php
Normal file
18
lib/plugins/tag/lang/pt-br/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tags';
|
||||
$lang['topic'] = 'Tópico';
|
||||
$lang['count'] = 'Quantidade';
|
||||
$lang['toolbar_icon'] = 'Inserir tag-sintaxe';
|
||||
$lang['empty_output'] = 'Saída vazia';
|
||||
|
||||
$lang['include'] = 'Incluir';
|
||||
$lang['exclude'] = 'Excluir';
|
||||
$lang['use_and'] = 'Usar lógica AND';
|
||||
$lang['no_tags'] = 'Sem tags encontradas';
|
32
lib/plugins/tag/lang/pt-br/settings.php
Normal file
32
lib/plugins/tag/lang/pt-br/settings.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Portuguese language file
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Flávio Roberto Santos <flavio.barata@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Namespace padrão para as tags';
|
||||
$lang['toolbar_icon'] = 'Mostrar ícone de barra de ferramentas (limpar dados/cache/* e cache do navegador se não for exibido)';
|
||||
|
||||
$lang['sortkey'] = 'classificar listas de tópicos por';
|
||||
$lang['sortkey_o_cdate'] = 'data de criação';
|
||||
$lang['sortkey_o_mdate'] = 'data de modificação';
|
||||
$lang['sortkey_o_pagename'] = 'nome da página';
|
||||
$lang['sortkey_o_id'] = 'ID da página';
|
||||
$lang['sortkey_o_ns'] = 'namespace';
|
||||
$lang['sortkey_o_title'] = 'título';
|
||||
|
||||
$lang['sortorder'] = 'ordem de classificação';
|
||||
$lang['sortorder_o_ascending'] = 'crescente';
|
||||
$lang['sortorder_o_descending'] = 'descendente';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formatação de bandeiras para o taglist (separado por círia, para bandeiras disponíveis, consulte a documentação do Plugin Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Lista também tags em subnamespaces de um namespace especificado (conta sintaxe)';
|
||||
|
||||
$lang['tags_list_css'] = 'Escolha o estilo aplicado à lista de tags das páginas';
|
||||
$lang['tags_list_css_o_tags'] = 'estilo padrão';
|
||||
$lang['tags_list_css_o_tagstop'] = 'otimizado para lista de tags no topo da página';
|
18
lib/plugins/tag/lang/pt/lang.php
Normal file
18
lib/plugins/tag/lang/pt/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tag';
|
||||
$lang['tags'] = 'Tags';
|
||||
$lang['topic'] = 'Tópico';
|
||||
$lang['count'] = 'Quantidade';
|
||||
$lang['toolbar_icon'] = 'Inserir sintaxe de tag';
|
||||
$lang['empty_output'] = 'Saída vazia';
|
||||
|
||||
$lang['include'] = 'Incluir';
|
||||
$lang['exclude'] = 'Excluir';
|
||||
$lang['use_and'] = 'Use lógica AND';
|
||||
$lang['no_tags'] = 'Nenhuma tag encontrada';
|
29
lib/plugins/tag/lang/pt/settings.php
Normal file
29
lib/plugins/tag/lang/pt/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Espaço de nome padrão para tags';
|
||||
$lang['toolbar_icon'] = 'Mostrar ícone da barra de ferramentas (limpar data/cache/* e o cache do navegador se não estiver exibido)';
|
||||
|
||||
$lang['sortkey'] = 'classificar listas de tópicos por';
|
||||
$lang['sortkey_o_cdate'] = 'data de criação';
|
||||
$lang['sortkey_o_mdate'] = 'data de modificação';
|
||||
$lang['sortkey_o_pagename'] = 'nome da página';
|
||||
$lang['sortkey_o_id'] = 'ID da página';
|
||||
$lang['sortkey_o_ns'] = 'espaço de nome';
|
||||
$lang['sortkey_o_title'] = 'título';
|
||||
|
||||
$lang['sortorder'] = 'ordem de classificação';
|
||||
$lang['sortorder_o_ascending'] = 'ascendente';
|
||||
$lang['sortorder_o_descending'] = 'decrescente';
|
||||
|
||||
$lang['pagelist_flags'] = 'Sinalizadores de formatação para a lista de tags (separados por vírgulas; para sinalizadores disponíveis, consulte a documentação do plugin Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Listar também tags em subnamespaces de um namespace especificado (sintaxe de contagem)';
|
||||
|
||||
$lang['tags_list_css'] = 'Escolha o estilo aplicado à lista de tags das páginas';
|
||||
$lang['tags_list_css_o_tags'] = 'estilo padrão';
|
||||
$lang['tags_list_css_o_tagstop'] = 'otimizado para lista de tags no topo da página';
|
20
lib/plugins/tag/lang/ru/lang.php
Normal file
20
lib/plugins/tag/lang/ru/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Aleksandr Selivanov <alexgearbox@yandex.ru>
|
||||
* @author Vasilyy Balyasnyy <v.balyasnyy@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Тег';
|
||||
$lang['tags'] = 'Теги';
|
||||
$lang['topic'] = 'Темы';
|
||||
$lang['count'] = 'Количество';
|
||||
$lang['toolbar_icon'] = 'Вставить тег-синтаксис';
|
||||
$lang['empty_output'] = 'Пустой вывод';
|
||||
|
||||
$lang['include'] = 'Включать';
|
||||
$lang['exclude'] = 'Исключать';
|
||||
$lang['use_and'] = 'Использовать логическое AND';
|
||||
$lang['no_tags'] = 'Теги не найдены';
|
30
lib/plugins/tag/lang/ru/settings.php
Normal file
30
lib/plugins/tag/lang/ru/settings.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Aleksandr Selivanov <alexgearbox@yandex.ru>
|
||||
* @author Vasilyy Balyasnyy <v.balyasnyy@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Пространство имён по умолчанию для тегов';
|
||||
$lang['toolbar_icon'] = 'Показывать кнопку на панели инструментов (если значок не отображается, очистите data/cache/* и кэш браузера)';
|
||||
|
||||
$lang['sortkey'] = 'Сортировать список страниц по:';
|
||||
$lang['sortkey_o_cdate'] = 'дате создания';
|
||||
$lang['sortkey_o_mdate'] = 'дате редактирования';
|
||||
$lang['sortkey_o_pagename'] = 'имени страницы';
|
||||
$lang['sortkey_o_id'] = 'ID страницы';
|
||||
$lang['sortkey_o_ns'] = 'пространству имён';
|
||||
$lang['sortkey_o_title'] = 'заголовку';
|
||||
|
||||
$lang['sortorder'] = 'Порядок сортировки';
|
||||
$lang['sortorder_o_ascending'] = 'по возрастанию';
|
||||
$lang['sortorder_o_descending'] = 'по убыванию';
|
||||
|
||||
$lang['pagelist_flags'] = 'Признаки (flags) форматирования для списка тегов (разделяйте запятыми; список доступных признаков (flags) описан в документации плагина Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Также показывать теги в подпространствах имён отмеченных пространств имён (синтаксис подсчёта (count))';
|
||||
|
||||
$lang['tags_list_css'] = 'Выбрать стиль для списка тегов на страницах';
|
||||
$lang['tags_list_css_o_tags'] = 'стиль по умолчанию';
|
||||
$lang['tags_list_css_o_tagstop'] = 'оптимизация для размещения наверху страницы';
|
20
lib/plugins/tag/lang/sv/lang.php
Normal file
20
lib/plugins/tag/lang/sv/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author hib <hibratt@gmail.com>
|
||||
* @author Tor Härnqvist <tor@harnqvist.se>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Tagg';
|
||||
$lang['tags'] = 'Taggar';
|
||||
$lang['topic'] = 'Ämne';
|
||||
$lang['count'] = 'Antal';
|
||||
$lang['toolbar_icon'] = 'Skriv tagg-syntax';
|
||||
$lang['empty_output'] = 'Tom utdata';
|
||||
|
||||
$lang['include'] = 'Inkludera';
|
||||
$lang['exclude'] = 'Exkludera';
|
||||
$lang['use_and'] = 'Använd logik AND';
|
||||
$lang['no_tags'] = 'Det finns inga taggar';
|
30
lib/plugins/tag/lang/sv/settings.php
Normal file
30
lib/plugins/tag/lang/sv/settings.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author hib <hibratt@gmail.com>
|
||||
* @author Tor Härnqvist <tor@harnqvist.se>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Standard namespace för taggar';
|
||||
$lang['toolbar_icon'] = 'Via verktygsmenyn (tom data/cache/* och webbläsarens cache om den inte visas)';
|
||||
|
||||
$lang['sortkey'] = 'sortera ämnen på';
|
||||
$lang['sortkey_o_cdate'] = 'skapandedatum';
|
||||
$lang['sortkey_o_mdate'] = 'ändringsdatum';
|
||||
$lang['sortkey_o_pagename'] = 'sidnamn';
|
||||
$lang['sortkey_o_id'] = 'sid-ID';
|
||||
$lang['sortkey_o_ns'] = 'namnrymd';
|
||||
$lang['sortkey_o_title'] = 'rubrik';
|
||||
|
||||
$lang['sortorder'] = 'sorteringsordning';
|
||||
$lang['sortorder_o_ascending'] = 'stigande';
|
||||
$lang['sortorder_o_descending'] = 'fallande';
|
||||
|
||||
$lang['pagelist_flags'] = 'Formatera flaggor för tagglistan (kommaseparerad, för tillgängliga flaggor, se dokumentationen för pagelist plugin) ';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Lista också taggar i sub-namnrymder inom specificerad namnrymd (count syntax)';
|
||||
|
||||
$lang['tags_list_css'] = 'Välj stil att applicera sidornas tagglista';
|
||||
$lang['tags_list_css_o_tags'] = 'Standardstil';
|
||||
$lang['tags_list_css_o_tagstop'] = 'optimerad för tagglista överst på sidan';
|
19
lib/plugins/tag/lang/tr/lang.php
Normal file
19
lib/plugins/tag/lang/tr/lang.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author İlker R. Kapaç <irifat@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Etiket';
|
||||
$lang['tags'] = 'Etiketler';
|
||||
$lang['topic'] = 'Başlık';
|
||||
$lang['count'] = 'Miktar';
|
||||
$lang['toolbar_icon'] = 'Etiket ekle';
|
||||
$lang['empty_output'] = 'Çıktıyı temizle';
|
||||
|
||||
$lang['include'] = 'Dahil et';
|
||||
$lang['exclude'] = 'Hariç tut';
|
||||
$lang['use_and'] = 'Mantık kullan AND';
|
||||
$lang['no_tags'] = 'Hiç etiket bulunamadı';
|
29
lib/plugins/tag/lang/tr/settings.php
Normal file
29
lib/plugins/tag/lang/tr/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author İlker R. Kapaç <irifat@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Etiketler için varsayılan isim alanı (namespace)';
|
||||
$lang['toolbar_icon'] = 'Araç çubuğu simgesini göster (Eğer görünmezse data/cache/ klasörünü ve internet gezgini ara belleğini silin)';
|
||||
|
||||
$lang['sortkey'] = 'konu listesinin sıralanış şekli';
|
||||
$lang['sortkey_o_cdate'] = 'oluşturulma tarihi';
|
||||
$lang['sortkey_o_mdate'] = 'değiştirilme tarihi';
|
||||
$lang['sortkey_o_pagename'] = 'sayfa adı';
|
||||
$lang['sortkey_o_id'] = 'sayfa kimliği (ID)';
|
||||
$lang['sortkey_o_ns'] = 'isim alanı (namespace)';
|
||||
$lang['sortkey_o_title'] = 'başlık';
|
||||
|
||||
$lang['sortorder'] = 'sıralama şekli';
|
||||
$lang['sortorder_o_ascending'] = 'artan';
|
||||
$lang['sortorder_o_descending'] = 'azalan';
|
||||
|
||||
$lang['pagelist_flags'] = 'Etiket listesi için biçimlendirme bayrakları (flags) (Virgül ile ayrılmış olarak yazın. Kullanılabilir bayrak listesi için pagelist eklentisinin belgelerine bakın)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Tanımlanan isim alanının altındaki isim alanlarını da listele (sözdizimini say)';
|
||||
|
||||
$lang['tags_list_css'] = 'Sayfalardaki etiket listesine uygulanacak biçimlendirmeyi seçin';
|
||||
$lang['tags_list_css_o_tags'] = 'Varsayılan biçim';
|
||||
$lang['tags_list_css_o_tagstop'] = 'Sayfanın üst tarafında etiket listesi göstermek için uygun';
|
18
lib/plugins/tag/lang/uk/lang.php
Normal file
18
lib/plugins/tag/lang/uk/lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Тег';
|
||||
$lang['tags'] = 'Теги';
|
||||
$lang['topic'] = 'Тема';
|
||||
$lang['count'] = 'Кількість';
|
||||
$lang['toolbar_icon'] = 'Вставити синтаксис тегів';
|
||||
$lang['empty_output'] = 'Порожній вихід';
|
||||
|
||||
$lang['include'] = 'Включити';
|
||||
$lang['exclude'] = 'Виключити';
|
||||
$lang['use_and'] = 'Використовувати логіку І';
|
||||
$lang['no_tags'] = 'Тегів не знайдено';
|
29
lib/plugins/tag/lang/uk/settings.php
Normal file
29
lib/plugins/tag/lang/uk/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Простір імен за замовчуванням для тегів';
|
||||
$lang['toolbar_icon'] = 'Показувати кнопку на панелі інструментів (якщо значок не відображається, очистіть data/cache/* і кеш браузера)';
|
||||
|
||||
$lang['sortkey'] = 'Сортувати список сторінок по:';
|
||||
$lang['sortkey_o_cdate'] = 'датою створення';
|
||||
$lang['sortkey_o_mdate'] = 'датою редагування';
|
||||
$lang['sortkey_o_pagename'] = 'імені сторінки';
|
||||
$lang['sortkey_o_id'] = 'ID сторінки';
|
||||
$lang['sortkey_o_ns'] = 'простору імен';
|
||||
$lang['sortkey_o_title'] = 'заголовку';
|
||||
|
||||
$lang['sortorder'] = 'Порядок сортування';
|
||||
$lang['sortorder_o_ascending'] = 'по зростанню';
|
||||
$lang['sortorder_o_descending'] = 'по спаданню';
|
||||
|
||||
$lang['pagelist_flags'] = 'Ознаки (flags) форматування для списку тегів (розділяйте комами; список доступних ознак (flags) описаний в документації плагіна Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Також показувати теги в підпросторах імен зазначених просторів імен (синтаксис підрахунку (count))';
|
||||
|
||||
$lang['tags_list_css'] = 'Вибрати стиль для списку тегів на сторінках';
|
||||
$lang['tags_list_css_o_tags'] = 'стиль за замовчуванням';
|
||||
$lang['tags_list_css_o_tagstop'] = 'оптимізація для розміщення нагорі сторінки';
|
19
lib/plugins/tag/lang/vi/lang.php
Normal file
19
lib/plugins/tag/lang/vi/lang.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Thien Hau <thienhau.9a14@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = 'Thẻ';
|
||||
$lang['tags'] = 'Thẻ';
|
||||
$lang['topic'] = 'Đề tài';
|
||||
$lang['count'] = 'Định lượng';
|
||||
$lang['toolbar_icon'] = 'Chèn cú pháp thẻ';
|
||||
$lang['empty_output'] = 'Đầu ra trống';
|
||||
|
||||
$lang['include'] = 'Bao gồm';
|
||||
$lang['exclude'] = 'Loại trừ';
|
||||
$lang['use_and'] = 'Dụng logic AND';
|
||||
$lang['no_tags'] = 'Không tìm thấy thẻ';
|
29
lib/plugins/tag/lang/vi/settings.php
Normal file
29
lib/plugins/tag/lang/vi/settings.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Thien Hau <thienhau.9a14@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = 'Không gian tên mặc định cho thẻ';
|
||||
$lang['toolbar_icon'] = 'Hiện biểu tượng thanh công cụ (xóa data/cache/* và bộ đệm của trình duyệt nếu nó không hiện)';
|
||||
|
||||
$lang['sortkey'] = 'sắp xếp danh sách đề tài theo';
|
||||
$lang['sortkey_o_cdate'] = 'ngày tạo';
|
||||
$lang['sortkey_o_mdate'] = 'ngày sửa đổi';
|
||||
$lang['sortkey_o_pagename'] = 'tên trang';
|
||||
$lang['sortkey_o_id'] = 'ID trang';
|
||||
$lang['sortkey_o_ns'] = 'không gian tên';
|
||||
$lang['sortkey_o_title'] = 'tiêu đề';
|
||||
|
||||
$lang['sortorder'] = 'thứ tự sắp xếp';
|
||||
$lang['sortorder_o_ascending'] = 'tăng dần';
|
||||
$lang['sortorder_o_descending'] = 'giảm dần';
|
||||
|
||||
$lang['pagelist_flags'] = 'Định dạng cờ cho danh sách thẻ (được phân tách bằng dấu phẩy, để biết các cờ có sẵn, hãy xem tài liệu của Plugin Pagelist)';
|
||||
|
||||
$lang['list_tags_of_subns'] = 'Liệt kê thẻ trong các không gian tên con của một không gian tên cụ thể (cú pháp đếm)';
|
||||
|
||||
$lang['tags_list_css'] = 'Chọn kiểu áp dụng cho danh sách thẻ của trang';
|
||||
$lang['tags_list_css_o_tags'] = 'kiểu mặc định';
|
||||
$lang['tags_list_css_o_tagstop'] = 'tối ưu hóa cho danh sách thẻ ở đầu trang';
|
21
lib/plugins/tag/lang/zh-tw/lang.php
Normal file
21
lib/plugins/tag/lang/zh-tw/lang.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Traditional Chinese language file
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Danny Lin <danny0838@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = '標籤';
|
||||
$lang['tags'] = '標籤';
|
||||
$lang['topic'] = '主題';
|
||||
$lang['count'] = '數量';
|
||||
$lang['toolbar_icon'] = '插入標籤語法';
|
||||
$lang['empty_output'] = '清空輸出';
|
||||
|
||||
$lang['include'] = '包含';
|
||||
$lang['exclude'] = '不含';
|
||||
$lang['use_and'] = '使用邏輯AND';
|
||||
$lang['no_tags'] = '沒有找到標籤';
|
32
lib/plugins/tag/lang/zh-tw/settings.php
Normal file
32
lib/plugins/tag/lang/zh-tw/settings.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Traditional Chinese language file
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Danny Lin <danny0838@gmail.com>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = '標籤預設的命名空間';
|
||||
$lang['toolbar_icon'] = '顯示工具列圖示 (如未出現請清除 data/cache/* 及瀏覽器快取)';
|
||||
|
||||
$lang['sortkey'] = '主題排序方式';
|
||||
$lang['sortkey_o_cdate'] = '建立日期';
|
||||
$lang['sortkey_o_mdate'] = '修改日期';
|
||||
$lang['sortkey_o_pagename'] = '頁面名稱';
|
||||
$lang['sortkey_o_id'] = '頁面全名';
|
||||
$lang['sortkey_o_ns'] = '命名空間';
|
||||
$lang['sortkey_o_title'] = '頁面標題';
|
||||
|
||||
$lang['sortorder'] = '排序方式';
|
||||
$lang['sortorder_o_ascending'] = '升序';
|
||||
$lang['sortorder_o_descending'] = '降序';
|
||||
|
||||
$lang['pagelist_flags'] = '標籤列表的格式化參數 (逗號分隔,可用參數詳見 pagelist 附加元件的說明文件)';
|
||||
|
||||
$lang['list_tags_of_subns'] = '也將指定命名空間之下子命名空間中的標籤列出 (count 語法)';
|
||||
|
||||
$lang['tags_list_css'] = '選擇應用於頁面標籤列表的樣式';
|
||||
$lang['tags_list_css_o_tags'] = '默認樣式';
|
||||
$lang['tags_list_css_o_tagstop'] = '針對頁面頂部的標籤列表進行了優化';
|
20
lib/plugins/tag/lang/zh/lang.php
Normal file
20
lib/plugins/tag/lang/zh/lang.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author haobug <qingxianhao@gmail.com>
|
||||
* @author Maie <m@maie.name>
|
||||
* @author Rainbow-Spike <rainbow_spike@derpy.ru>
|
||||
*/
|
||||
|
||||
$lang['tag'] = '标签';
|
||||
$lang['tags'] = '标签';
|
||||
$lang['topic'] = '主题';
|
||||
$lang['count'] = '数量';
|
||||
$lang['toolbar_icon'] = '插入标签';
|
||||
$lang['empty_output'] = '输出为空';
|
||||
|
||||
$lang['include'] = '包括';
|
||||
$lang['exclude'] = '排除';
|
||||
$lang['use_and'] = '使用逻辑AND';
|
||||
$lang['no_tags'] = '没有找到标签';
|
30
lib/plugins/tag/lang/zh/settings.php
Normal file
30
lib/plugins/tag/lang/zh/settings.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author haobug <qingxianhao@gmail.com>
|
||||
* @author Maie <m@maie.name>
|
||||
*/
|
||||
|
||||
$lang['namespace'] = '标签的默认命名空间';
|
||||
$lang['toolbar_icon'] = '显示工具栏图标 (如果没有显示,请清除 data/cache/* 及浏览器缓存)';
|
||||
|
||||
$lang['sortkey'] = '按何键值排序';
|
||||
$lang['sortkey_o_cdate'] = '创建日期';
|
||||
$lang['sortkey_o_mdate'] = '修改日期';
|
||||
$lang['sortkey_o_pagename'] = '页面名称';
|
||||
$lang['sortkey_o_id'] = '页面 ID';
|
||||
$lang['sortkey_o_ns'] = '命名空间';
|
||||
$lang['sortkey_o_title'] = '页面标题';
|
||||
|
||||
$lang['sortorder'] = '排序方式';
|
||||
$lang['sortorder_o_ascending'] = '升序';
|
||||
$lang['sortorder_o_descending'] = '降序';
|
||||
|
||||
$lang['pagelist_flags'] = '标签列表的格式化标志 (逗号分隔,支持标志参考 Pagelist 插件的文档)';
|
||||
|
||||
$lang['list_tags_of_subns'] = '列出指定命名空间的子命名空间的标签 (count 语法)';
|
||||
|
||||
$lang['tags_list_css'] = '选择用于网页的标签列表样式';
|
||||
$lang['tags_list_css_o_tags'] = '默认样式';
|
||||
$lang['tags_list_css_o_tagstop'] = '优化在页面顶部显示的标签列表';
|
7
lib/plugins/tag/plugin.info.txt
Normal file
7
lib/plugins/tag/plugin.info.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
base tag
|
||||
author Michael Hamann, Gina Häussge, Christopher Smith, Michael Klier, Esther Brunner
|
||||
email michael@content-space.de
|
||||
date 2020-12-02
|
||||
name Tag Plugin
|
||||
desc tag wiki pages
|
||||
url https://www.dokuwiki.org/plugin:tag
|
16
lib/plugins/tag/script.js
Normal file
16
lib/plugins/tag/script.js
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* For the searchtags syntax: make the checkboxes behave like radio buttons
|
||||
* so the user can't both include and exclude a tag
|
||||
*/
|
||||
jQuery(function() {
|
||||
jQuery('form.plugin__tag_search table input').change(function() {
|
||||
if (jQuery(this).attr('checked')) { // was this input checked?
|
||||
if (jQuery(this).parent().hasClass('minus')) {
|
||||
// find the other input in the same tr and uncheck it
|
||||
jQuery(this).closest('tr').find('.plus input').attr('checked', false);
|
||||
} else {
|
||||
jQuery(this).closest('tr').find('.minus input').attr('checked', false);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
28
lib/plugins/tag/style.css
Normal file
28
lib/plugins/tag/style.css
Normal file
@@ -0,0 +1,28 @@
|
||||
div.dokuwiki div.tags,
|
||||
div.dokuwiki div.tagstop {
|
||||
font-size: 95%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.dokuwiki div.tags {
|
||||
border-top: 2px dotted __border__;
|
||||
clear: both;
|
||||
margin-bottom: 1.4em;
|
||||
}
|
||||
|
||||
div.dokuwiki div.tagstop {
|
||||
border-bottom: 2px dotted __border__;
|
||||
margin-top: -1.3em;
|
||||
margin-bottom: .4em;
|
||||
}
|
||||
|
||||
div.dokuwiki div.tags span,
|
||||
div.dokuwiki div.tagstop span {
|
||||
background: transparent url(images/tag.gif) 0px 2px no-repeat;
|
||||
padding: 1px 0px 1px 17px;
|
||||
}
|
||||
|
||||
/* make it easier to select the +/- checkboxes in the tagsearch table by making them block elements */
|
||||
div.dokuwiki form.plugin__tag_search label.plus, div.dokuwiki form.plugin__tag_search label.minus {
|
||||
display: block;
|
||||
}
|
124
lib/plugins/tag/syntax/count.php
Normal file
124
lib/plugins/tag/syntax/count.php
Normal file
@@ -0,0 +1,124 @@
|
||||
<?php
|
||||
/**
|
||||
* Tag Plugin: displays list of keywords with links to categories this page
|
||||
* belongs to. The links are marked as tags for Technorati and other services
|
||||
* using tagging.
|
||||
*
|
||||
* Usage: {{tag>category tags space separated}}
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Matthias Schulte <dokuwiki@lupo49.de>
|
||||
*/
|
||||
|
||||
/** Count syntax, allows to list tag counts */
|
||||
class syntax_plugin_tag_count extends DokuWiki_Syntax_Plugin {
|
||||
|
||||
/**
|
||||
* @return string Syntax type
|
||||
*/
|
||||
function getType() { return 'substition'; }
|
||||
/**
|
||||
* @return int Sort order
|
||||
*/
|
||||
function getSort() { return 305; }
|
||||
/**
|
||||
* @return string Paragraph type
|
||||
*/
|
||||
function getPType() { return 'block';}
|
||||
|
||||
/**
|
||||
* @param string $mode Parser mode
|
||||
*/
|
||||
function connectTo($mode) {
|
||||
$this->Lexer->addSpecialPattern('\{\{count>.*?\}\}', $mode, 'plugin_tag_count');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle matches of the count syntax
|
||||
*
|
||||
* @param string $match The match of the syntax
|
||||
* @param int $state The state of the handler
|
||||
* @param int $pos The position in the document
|
||||
* @param Doku_Handler $handler The handler
|
||||
* @return array Data for the renderer
|
||||
*/
|
||||
function handle($match, $state, $pos, Doku_Handler $handler) {
|
||||
|
||||
$dump = trim(substr($match, 8, -2)); // get given tags
|
||||
$dump = explode('&', $dump); // split to tags and allowed namespaces
|
||||
$tags = $dump[0];
|
||||
$allowedNamespaces = explode(' ', $dump[1]); // split given namespaces into an array
|
||||
|
||||
if($allowedNamespaces && $allowedNamespaces[0] == '') {
|
||||
unset($allowedNamespaces[0]); // When exists, remove leading space after the delimiter
|
||||
$allowedNamespaces = array_values($allowedNamespaces);
|
||||
}
|
||||
|
||||
if (empty($allowedNamespaces)) $allowedNamespaces = null;
|
||||
|
||||
if (!$tags) $tags = '+';
|
||||
|
||||
/** @var helper_plugin_tag $my */
|
||||
if(!($my = $this->loadHelper('tag'))) return false;
|
||||
|
||||
return array($my->_parseTagList($tags), $allowedNamespaces);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render xhtml output or metadata
|
||||
*
|
||||
* @param string $mode Renderer mode (supported modes: xhtml and metadata)
|
||||
* @param Doku_Renderer $renderer The renderer
|
||||
* @param array $data The data from the handler function
|
||||
* @return bool If rendering was successful.
|
||||
*/
|
||||
function render($mode, Doku_Renderer $renderer, $data) {
|
||||
if ($data == false) return false;
|
||||
|
||||
list($tags, $allowedNamespaces) = $data;
|
||||
|
||||
// deactivate (renderer) cache as long as there is no proper cache handling
|
||||
// implemented for the count syntax
|
||||
$renderer->nocache();
|
||||
|
||||
if($mode == "xhtml") {
|
||||
/** @var helper_plugin_tag $my */
|
||||
if(!($my = $this->loadHelper('tag'))) return false;
|
||||
|
||||
// get tags and their occurrences
|
||||
if($tags[0] == '+') {
|
||||
// no tags given, list all tags for allowed namespaces
|
||||
$occurrences = $my->tagOccurrences($tags, $allowedNamespaces, true);
|
||||
} else {
|
||||
$occurrences = $my->tagOccurrences($tags, $allowedNamespaces);
|
||||
}
|
||||
|
||||
$class = "inline"; // valid: inline, ul, pagelist
|
||||
$col = "page";
|
||||
|
||||
$renderer->doc .= '<table class="'.$class.'">'.DOKU_LF;
|
||||
$renderer->doc .= DOKU_TAB.'<tr>'.DOKU_LF.DOKU_TAB.DOKU_TAB;
|
||||
$renderer->doc .= '<th class="'.$col.'">'.$this->getLang('tag').'</th>';
|
||||
$renderer->doc .= '<th class="'.$col.'">'.$this->getLang('count').'</th>';
|
||||
$renderer->doc .= DOKU_LF.DOKU_TAB.'</tr>'.DOKU_LF;
|
||||
|
||||
if(empty($occurrences)) {
|
||||
// Skip output
|
||||
$renderer->doc .= DOKU_TAB.'<tr>'.DOKU_LF.DOKU_TAB.DOKU_TAB;
|
||||
$renderer->doc .= DOKU_TAB.DOKU_TAB.'<td class="'.$class.'" colspan="2">'.$this->getLang('empty_output').'</td>'.DOKU_LF;
|
||||
$renderer->doc .= DOKU_LF.DOKU_TAB.'</tr>'.DOKU_LF;
|
||||
} else {
|
||||
foreach($occurrences as $tagname => $count) {
|
||||
if($count <= 0) continue; // don't display tags with zero occurrences
|
||||
$renderer->doc .= DOKU_TAB.'<tr>'.DOKU_LF.DOKU_TAB.DOKU_TAB;
|
||||
$renderer->doc .= DOKU_TAB.DOKU_TAB.'<td class="'.$class.'">'.$my->tagLink($tagname).'</td>'.DOKU_LF;
|
||||
$renderer->doc .= DOKU_TAB.DOKU_TAB.'<td class="'.$class.'">'.$count.'</td>'.DOKU_LF;
|
||||
$renderer->doc .= DOKU_LF.DOKU_TAB.'</tr>'.DOKU_LF;
|
||||
}
|
||||
}
|
||||
$renderer->doc .= '</table>'.DOKU_LF;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// vim:ts=4:sw=4:et:
|
281
lib/plugins/tag/syntax/searchtags.php
Normal file
281
lib/plugins/tag/syntax/searchtags.php
Normal file
@@ -0,0 +1,281 @@
|
||||
<?php
|
||||
/**
|
||||
* Syntax plugin part for displaying a tag search form with results.
|
||||
*
|
||||
* Usage: {{tagsearch[&flags]}}
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Michael Hamann <michael@content-space.de>
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tagsearch syntax, displays a tag search form with results similar to the topic syntax
|
||||
*/
|
||||
class syntax_plugin_tag_searchtags extends DokuWiki_Syntax_Plugin {
|
||||
/**
|
||||
* @return string Syntax type
|
||||
*/
|
||||
function getType() { return 'substition'; }
|
||||
|
||||
/**
|
||||
* @return string Paragraph type
|
||||
*/
|
||||
function getPType() { return 'block'; }
|
||||
|
||||
/**
|
||||
* @return int Sort order
|
||||
*/
|
||||
function getSort() { return 295; }
|
||||
|
||||
/**
|
||||
* @param string $mode Parser mode
|
||||
*/
|
||||
function connectTo($mode) {
|
||||
$this->Lexer->addSpecialPattern('\{\{searchtags\}\}',$mode,'plugin_tag_searchtags');
|
||||
// make sure that flags really start with & and media files starting with "searchtags" still work
|
||||
$this->Lexer->addSpecialPattern('\{\{searchtags&.*?\}\}',$mode,'plugin_tag_searchtags');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle matches of the searchtags syntax
|
||||
*
|
||||
* @param string $match The match of the syntax
|
||||
* @param int $state The state of the handler
|
||||
* @param int $pos The position in the document
|
||||
* @param Doku_Handler $handler The handler
|
||||
* @return array Data for the renderer
|
||||
*/
|
||||
function handle($match, $state, $pos, Doku_Handler $handler) {
|
||||
$flags = substr($match, 10, -2); // strip {{searchtags from start and }} from end
|
||||
// remove empty flags by using array_filter (removes elements == false)
|
||||
$flags = array_filter(explode('&', $flags));
|
||||
|
||||
return $flags;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render xhtml output or metadata
|
||||
*
|
||||
* @param string $mode Renderer mode (supported modes: xhtml and metadata)
|
||||
* @param Doku_Renderer $renderer The renderer
|
||||
* @param array $data The data from the handler function
|
||||
* @return bool If rendering was successful.
|
||||
*/
|
||||
function render($mode, Doku_Renderer $renderer, $data) {
|
||||
global $lang;
|
||||
$flags = $data;
|
||||
|
||||
if ($mode == 'xhtml') {
|
||||
/* @var Doku_Renderer_xhtml $renderer */
|
||||
|
||||
// prevent caching to ensure content is always fresh
|
||||
$renderer->nocache();
|
||||
|
||||
/* @var helper_plugin_pagelist $pagelist */
|
||||
// let Pagelist Plugin do the work for us
|
||||
if ((!$pagelist = $this->loadHelper('pagelist'))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Prepare the flags for the pagelist plugin
|
||||
$configflags = explode(',', str_replace(" ", "", $this->getConf('pagelist_flags')));
|
||||
$flags = array_merge($configflags, $flags);
|
||||
foreach($flags as $key => $flag) {
|
||||
if($flag == "") unset($flags[$key]);
|
||||
}
|
||||
|
||||
// print the search form
|
||||
$nonsform = in_array('nonsform', $flags);
|
||||
$renderer->doc .= $this->getForm($nonsform);
|
||||
|
||||
// get the tag input data
|
||||
$tags = $this->getTagSearchString();
|
||||
|
||||
if ($tags != NULL) {
|
||||
/* @var helper_plugin_tag $my */
|
||||
if ($my = $this->loadHelper('tag')) $pages = $my->getTopic($this->getNS(), '', $tags);
|
||||
|
||||
// Display a message when no pages were found
|
||||
if (!isset($pages) || !$pages) {
|
||||
$renderer->p_open();
|
||||
$renderer->cdata($lang['nothingfound']);
|
||||
$renderer->p_close();
|
||||
} else {
|
||||
|
||||
// display the actual search results
|
||||
$pagelist->setFlags($flags);
|
||||
$pagelist->startList();
|
||||
foreach ($pages as $page) {
|
||||
$pagelist->addPage($page);
|
||||
}
|
||||
$renderer->doc .= $pagelist->finishList();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the search form for the namespace and the tag selection
|
||||
*
|
||||
* @return string the HTML code of the search form
|
||||
*/
|
||||
private function getForm($nonsform=false) {
|
||||
global $conf, $lang;
|
||||
|
||||
if (!$nonsform) {
|
||||
// Get the list of all namespaces for the dropdown
|
||||
$namespaces = array();
|
||||
search($namespaces,$conf['datadir'],'search_namespaces',array());
|
||||
|
||||
// build the list in the form value => label from the namespace search result
|
||||
$ns_select = array('' => '');
|
||||
foreach ($namespaces as $ns) {
|
||||
// only display namespaces the user can access when sneaky index is on
|
||||
if ($ns['perm'] > 0 || $conf['sneaky_index'] == 0) {
|
||||
$ns_select[$ns['id']] = $ns['id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$form = new Doku_Form(array('action' => '', 'method' => 'post', 'class' => 'plugin__tag_search'));
|
||||
|
||||
// add a paragraph around the inputs in order to get some margin around the form elements
|
||||
$form->addElement(form_makeOpenTag('p'));
|
||||
// namespace select
|
||||
if (!$nonsform) {
|
||||
$form->addElement(form_makeMenuField('plugin__tag_search_namespace', $ns_select, $this->getNS(), $lang['namespaces']));
|
||||
}
|
||||
|
||||
// checkbox for AND
|
||||
$attr = array();
|
||||
if ($this->useAnd()) $attr['checked'] = 'checked';
|
||||
$form->addElement(form_makeCheckboxField('plugin__tag_search_and', 1, $this->getLang('use_and'), '', '', $attr));
|
||||
$form->addElement(form_makeCloseTag('p'));
|
||||
|
||||
// load the tag list - only tags that actually have pages assigned that the current user can access are listed
|
||||
/* @var helper_plugin_tag $my */
|
||||
if ($my = $this->loadHelper('tag')) $tags = $my->tagOccurrences(array(), NULL, true);
|
||||
// sort tags by name ($tags is in the form $tag => $count)
|
||||
ksort($tags);
|
||||
|
||||
// display error message when no tags were found
|
||||
if (!isset($tags) || $tags == NULL) {
|
||||
$form->addElement(form_makeOpenTag('p'));
|
||||
$form->addElement($this->getLang('no_tags'));
|
||||
$form->addElement(form_makeCloseTag('p'));
|
||||
} else {
|
||||
// the tags table
|
||||
$form->addElement(form_makeOpenTag('div', array('class' => 'table')));
|
||||
$form->addElement(form_makeOpenTag('table', array('class' => 'inline')));
|
||||
// print table header
|
||||
$form->addElement(form_makeOpenTag('tr'));
|
||||
$form->addElement(form_makeOpenTag('th'));
|
||||
$form->addElement($this->getLang('include'));
|
||||
$form->addElement(form_makeCloseTag('th'));
|
||||
$form->addElement(form_makeOpenTag('th'));
|
||||
$form->addElement($this->getLang('exclude'));
|
||||
$form->addElement(form_makeCloseTag('th'));
|
||||
$form->addElement(form_makeOpenTag('th'));
|
||||
$form->addElement($this->getLang('tags'));
|
||||
$form->addElement(form_makeCloseTag('th'));
|
||||
$form->addElement(form_makeCloseTag('tr'));
|
||||
|
||||
// print tag checkboxes
|
||||
foreach ($tags as $tag => $count) {
|
||||
$form->addElement(form_makeOpenTag('tr'));
|
||||
$form->addElement(form_makeOpenTag('td'));
|
||||
$attr = array();
|
||||
if ($this->isSelected($tag)) $attr['checked'] = 'checked';
|
||||
$form->addElement(form_makeCheckboxField('plugin__tag_search_tags[]', $tag, '+', '', 'plus', $attr));
|
||||
$form->addElement(form_makeCloseTag('td'));
|
||||
$form->addElement(form_makeOpenTag('td'));
|
||||
$attr = array();
|
||||
if ($this->isSelected('-'.$tag)) $attr['checked'] = 'checked';
|
||||
$form->addElement(form_makeCheckboxField('plugin__tag_search_tags[]', '-'.$tag, '-', '', 'minus', $attr));
|
||||
$form->addElement(form_makeCloseTag('td'));
|
||||
$form->addElement(form_makeOpenTag('td'));
|
||||
$form->addElement(hsc($tag).' ['.$count.']');
|
||||
$form->addElement(form_makeCloseTag('td'));
|
||||
$form->addElement(form_makeCloseTag('tr'));
|
||||
}
|
||||
|
||||
$form->addElement(form_makeCloseTag('table'));
|
||||
$form->addElement(form_makeCloseTag('div'));
|
||||
|
||||
// submit button (doesn't use the button form element because it always submits an action which is not
|
||||
// recognized for $preact in inc/actions.php and thus always causes a redirect)
|
||||
$form->addElement(form_makeOpenTag('p'));
|
||||
$form->addElement(form_makeTag('input', array('type' => 'submit', 'value' => $lang['btn_search'])));
|
||||
$form->addElement(form_makeCloseTag('p'));
|
||||
}
|
||||
|
||||
return $form->getForm();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the currently selected namespace
|
||||
* @return string the cleaned namespace id
|
||||
*/
|
||||
private function getNS() {
|
||||
if (isset($_POST['plugin__tag_search_namespace'])) {
|
||||
return cleanID($_POST['plugin__tag_search_namespace']);
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the tag search string from the selected tags
|
||||
* @return string|NULL the tag search or NULL when no tags were selected
|
||||
*/
|
||||
private function getTagSearchString() {
|
||||
if (isset($_POST['plugin__tag_search_tags']) && is_array($_POST['plugin__tag_search_tags'])) {
|
||||
$tags = $_POST['plugin__tag_search_tags'];
|
||||
// wWhen and is set, prepend "+" to each tag
|
||||
$plus = (isset($_POST['plugin__tag_search_and']) ? '+' : '');
|
||||
$positive_tags = '';
|
||||
$negative_tags = '';
|
||||
foreach ($tags as $tag) {
|
||||
$tag = (string)$tag;
|
||||
if ($tag[0] == '-') {
|
||||
$negative_tags .= $tag.' ';
|
||||
} else {
|
||||
if ($positive_tags === '') {
|
||||
$positive_tags = $tag.' ';
|
||||
} else {
|
||||
$positive_tags .= $plus.$tag.' ';
|
||||
}
|
||||
}
|
||||
}
|
||||
return $positive_tags.$negative_tags;
|
||||
} else {
|
||||
return NULL; // return NULL when no tags were selected so no results will be displayed
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a tag was selected for search
|
||||
*
|
||||
* @param string $tag The tag to check
|
||||
* @return bool if the tag was checked
|
||||
*/
|
||||
private function isSelected($tag) {
|
||||
if (isset($_POST['plugin__tag_search_tags']) && is_array($_POST['plugin__tag_search_tags'])) {
|
||||
return in_array($tag, $_POST['plugin__tag_search_tags'], true);
|
||||
} else {
|
||||
return false; // no tags in the post data - no tag selected
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the tag query should use AND (instead of OR)
|
||||
*
|
||||
* @return bool if the query should use AND
|
||||
*/
|
||||
private function useAnd() {
|
||||
return isset($_POST['plugin__tag_search_and']);
|
||||
}
|
||||
}
|
||||
// vim:ts=4:sw=4:et:
|
112
lib/plugins/tag/syntax/tag.php
Normal file
112
lib/plugins/tag/syntax/tag.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
/**
|
||||
* Tag Plugin: displays list of keywords with links to categories this page
|
||||
* belongs to. The links are marked as tags for Technorati and other services
|
||||
* using tagging.
|
||||
*
|
||||
* Usage: {{tag>category tags space separated}}
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tag syntax plugin, allows to specify tags in a page
|
||||
*/
|
||||
class syntax_plugin_tag_tag extends DokuWiki_Syntax_Plugin {
|
||||
|
||||
/**
|
||||
* @return string Syntax type
|
||||
*/
|
||||
function getType() { return 'substition'; }
|
||||
/**
|
||||
* @return int Sort order
|
||||
*/
|
||||
function getSort() { return 305; }
|
||||
/**
|
||||
* @return string Paragraph type
|
||||
*/
|
||||
function getPType() { return 'block';}
|
||||
|
||||
/**
|
||||
* @param string $mode Parser mode
|
||||
*/
|
||||
function connectTo($mode) {
|
||||
$this->Lexer->addSpecialPattern('\{\{tag>.*?\}\}', $mode, 'plugin_tag_tag');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle matches of the tag syntax
|
||||
*
|
||||
* @param string $match The match of the syntax
|
||||
* @param int $state The state of the handler
|
||||
* @param int $pos The position in the document
|
||||
* @param Doku_Handler $handler The handler
|
||||
* @return array Data for the renderer
|
||||
*/
|
||||
function handle($match, $state, $pos, Doku_Handler $handler) {
|
||||
$tags = trim(substr($match, 6, -2)); // strip markup & whitespace
|
||||
$tags = preg_replace(array('/[[:blank:]]+/', '/\s+/'), " ", $tags); // replace linebreaks and multiple spaces with one space character
|
||||
|
||||
if (!$tags) return false;
|
||||
|
||||
// load the helper_plugin_tag
|
||||
/** @var helper_plugin_tag $my */
|
||||
if (!$my = $this->loadHelper('tag')) return false;
|
||||
|
||||
// split tags and returns for renderer
|
||||
return $my->_parseTagList($tags);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render xhtml output or metadata
|
||||
*
|
||||
* @param string $mode Renderer mode (supported modes: xhtml and metadata)
|
||||
* @param Doku_Renderer $renderer The renderer
|
||||
* @param array $data The data from the handler function
|
||||
* @return bool If rendering was successful.
|
||||
*/
|
||||
function render($mode, Doku_Renderer $renderer, $data) {
|
||||
if ($data === false) return false;
|
||||
/** @var helper_plugin_tag $my */
|
||||
if (!$my = $this->loadHelper('tag')) return false;
|
||||
|
||||
// XHTML output
|
||||
if ($mode == 'xhtml') {
|
||||
$tags = $my->tagLinks($data);
|
||||
if (!$tags) return true;
|
||||
$renderer->doc .= '<div class="'.$this->getConf('tags_list_css').'"><span>'.DOKU_LF.
|
||||
DOKU_TAB.$tags.DOKU_LF.
|
||||
'</span></div>'.DOKU_LF;
|
||||
return true;
|
||||
|
||||
// for metadata renderer
|
||||
} elseif ($mode == 'metadata') {
|
||||
/** @var Doku_Renderer_metadata $renderer */
|
||||
// erase tags on persistent metadata no more used
|
||||
if (isset($renderer->persistent['subject'])) {
|
||||
unset($renderer->persistent['subject']);
|
||||
$renderer->meta['subject'] = array();
|
||||
}
|
||||
|
||||
if (!isset($renderer->meta['subject'])) $renderer->meta['subject'] = array();
|
||||
|
||||
// each registered tags in metadata and index should be valid IDs
|
||||
$data = array_map('cleanID', $data);
|
||||
// merge with previous tags and make the values unique
|
||||
$renderer->meta['subject'] = array_unique(array_merge($renderer->meta['subject'], $data));
|
||||
|
||||
if ($renderer->capture) $renderer->doc .= DOKU_LF.implode(' ', $data).DOKU_LF;
|
||||
|
||||
// add references if tag page exists
|
||||
foreach ($data as $tag) {
|
||||
resolve_pageid($my->namespace, $tag, $exists); // resolve shortcuts
|
||||
$renderer->meta['relation']['references'][$tag] = $exists;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// vim:ts=4:sw=4:et:
|
90
lib/plugins/tag/syntax/tagpage.php
Normal file
90
lib/plugins/tag/syntax/tagpage.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
/**
|
||||
* Tag Plugin: Display a link to the listing of all pages with a certain tag.
|
||||
*
|
||||
* Usage: {{tagpage>mytag[&dynamic][|title]}}
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Matthias Schulte <dokuwiki@lupo49.de>
|
||||
*/
|
||||
|
||||
/** Tagpage syntax, allows to link to a given tag */
|
||||
class syntax_plugin_tag_tagpage extends DokuWiki_Syntax_Plugin {
|
||||
|
||||
/**
|
||||
* @return string Syntax type
|
||||
*/
|
||||
function getType() {
|
||||
return 'substition';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int Sort order
|
||||
*/
|
||||
function getSort() {
|
||||
return 305;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string Paragraph type
|
||||
*/
|
||||
function getPType() {
|
||||
return 'normal';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $mode Parser mode
|
||||
*/
|
||||
function connectTo($mode) {
|
||||
$this->Lexer->addSpecialPattern('\{\{tagpage>.*?\}\}', $mode, 'plugin_tag_tagpage');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle matches of the count syntax
|
||||
*
|
||||
* @param string $match The match of the syntax
|
||||
* @param int $state The state of the handler
|
||||
* @param int $pos The position in the document
|
||||
* @param Doku_Handler $handler The handler
|
||||
* @return array Data for the renderer
|
||||
*/
|
||||
function handle($match, $state, $pos, Doku_Handler $handler) {
|
||||
$params = array();
|
||||
$dump = trim(substr($match, 10, -2)); // get given tag
|
||||
$dump = explode('|', $dump, 2); // split to tags, link name and options
|
||||
$params['title'] = $dump[1];
|
||||
$dump = explode('&', $dump[0]);
|
||||
$params['dynamic'] = ($dump[1] == 'dynamic');
|
||||
$params['tag'] = trim($dump[0]);
|
||||
|
||||
return $params;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render xhtml output
|
||||
*
|
||||
* @param string $mode Renderer mode (supported modes: xhtml)
|
||||
* @param Doku_Renderer $renderer The renderer
|
||||
* @param array $data The data from the handler function
|
||||
* @return bool If rendering was successful.
|
||||
*/
|
||||
function render($mode, Doku_Renderer $renderer, $data) {
|
||||
if($data == false) return false;
|
||||
|
||||
if($mode == "xhtml") {
|
||||
if($data['dynamic']) {
|
||||
// deactivate (renderer) cache as long as there is no proper cache handling
|
||||
// implemented for the count syntax
|
||||
$renderer->nocache();
|
||||
}
|
||||
|
||||
/** @var helper_plugin_tag $my */
|
||||
if(!($my = $this->loadHelper('tag'))) return false;
|
||||
|
||||
$renderer->doc .= $my->tagLink($data['tag'], $data['title'], $data['dynamic']);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// vim:ts=4:sw=4:et:
|
129
lib/plugins/tag/syntax/topic.php
Normal file
129
lib/plugins/tag/syntax/topic.php
Normal file
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
/**
|
||||
* Tag Plugin, topic component: displays links to all wiki pages with a certain tag
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Esther Brunner <wikidesign@gmail.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* Topic syntax, displays links to all wiki pages with a certain tag
|
||||
*/
|
||||
class syntax_plugin_tag_topic extends DokuWiki_Syntax_Plugin {
|
||||
|
||||
/**
|
||||
* @return string Syntax type
|
||||
*/
|
||||
function getType() { return 'substition'; }
|
||||
|
||||
/**
|
||||
* @return string Paragraph type
|
||||
*/
|
||||
function getPType() { return 'block'; }
|
||||
|
||||
/**
|
||||
* @return int Sort order
|
||||
*/
|
||||
function getSort() { return 295; }
|
||||
|
||||
/**
|
||||
* @param string $mode Parser mode
|
||||
*/
|
||||
function connectTo($mode) {
|
||||
$this->Lexer->addSpecialPattern('\{\{topic>.+?\}\}',$mode,'plugin_tag_topic');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle matches of the topic syntax
|
||||
*
|
||||
* @param string $match The match of the syntax
|
||||
* @param int $state The state of the handler
|
||||
* @param int $pos The position in the document
|
||||
* @param Doku_Handler $handler The handler
|
||||
* @return array Data for the renderer
|
||||
*/
|
||||
function handle($match, $state, $pos, Doku_Handler $handler) {
|
||||
global $ID;
|
||||
|
||||
$match = substr($match, 8, -2); // strip {{topic> from start and }} from end
|
||||
list($match, $flags) = explode('&', $match, 2);
|
||||
$flags = explode('&', $flags);
|
||||
list($ns, $tag) = explode('?', $match);
|
||||
|
||||
if (!$tag) {
|
||||
$tag = $ns;
|
||||
$ns = '';
|
||||
}
|
||||
|
||||
if (($ns == '*') || ($ns == ':')) $ns = '';
|
||||
elseif ($ns == '.') $ns = getNS($ID);
|
||||
else $ns = cleanID($ns);
|
||||
|
||||
return array($ns, trim($tag), $flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render xhtml output or metadata
|
||||
*
|
||||
* @param string $mode Renderer mode (supported modes: xhtml and metadata)
|
||||
* @param Doku_Renderer $renderer The renderer
|
||||
* @param array $data The data from the handler function
|
||||
* @return bool If rendering was successful.
|
||||
*/
|
||||
function render($mode, Doku_Renderer $renderer, $data) {
|
||||
list($ns, $tag, $flags) = $data;
|
||||
|
||||
/* @var helper_plugin_tag $my */
|
||||
if ($my = $this->loadHelper('tag')) $pages = $my->getTopic($ns, '', $tag);
|
||||
if (!isset($pages) || !$pages) return true; // nothing to display
|
||||
|
||||
if ($mode == 'xhtml') {
|
||||
/* @var Doku_Renderer_xhtml $renderer */
|
||||
|
||||
// prevent caching to ensure content is always fresh
|
||||
$renderer->nocache();
|
||||
|
||||
/* @var helper_plugin_pagelist $pagelist */
|
||||
// let Pagelist Plugin do the work for us
|
||||
if ((!$pagelist = $this->loadHelper('pagelist'))) {
|
||||
return false;
|
||||
}
|
||||
$pagelist->sort = false;
|
||||
$pagelist->rsort = false;
|
||||
|
||||
$configflags = explode(',', str_replace(" ", "", $this->getConf('pagelist_flags')));
|
||||
$flags = array_merge($configflags, $flags);
|
||||
foreach($flags as $key => $flag) {
|
||||
if($flag == "") unset($flags[$key]);
|
||||
}
|
||||
|
||||
$pagelist->setFlags($flags);
|
||||
$pagelist->startList();
|
||||
|
||||
// Sort pages by pagename if required by flags
|
||||
if($pagelist->sort || $pagelist->rsort) {
|
||||
$keys = array();
|
||||
$fnc = create_function('$a, $b', 'return strcmp(noNS($a["id"]), noNS($b["id"])); ');
|
||||
usort($pages, $fnc);
|
||||
// rsort is true - revserse sort the pages
|
||||
if($pagelist->rsort) krsort($pages);
|
||||
}
|
||||
|
||||
foreach ($pages as $page) {
|
||||
$pagelist->addPage($page);
|
||||
}
|
||||
$renderer->doc .= $pagelist->finishList();
|
||||
return true;
|
||||
|
||||
// for metadata renderer
|
||||
/* } elseif ($mode == 'metadata') {
|
||||
foreach ($pages as $page) {
|
||||
$renderer->meta['relation']['references'][$page['id']] = true;
|
||||
}
|
||||
|
||||
return true;*/ // causes issues with backlinks
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// vim:ts=4:sw=4:et:
|
Reference in New Issue
Block a user