2 rcs_id('$Id: SemanticRelations.php,v 1.3 2007-01-03 21:23:06 rurban Exp $');
4 Copyright 2005 Reini Urban
6 This file is part of PhpWiki.
8 PhpWiki is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 PhpWiki is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with PhpWiki; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 * SemanticRelations - Display the list of relations and attributes of given page(s).
25 * Relations are stored in the link table.
26 * Attributes as simple page meta-data.
28 * @author: Reini Urban
29 * @see WikiPlugin_SemanticSearch
31 class WikiPlugin_SemanticRelations
35 return _("SemanticRelations");
37 function getDescription() {
38 return _("Display the list of relations and attributes on this page.");
40 function getVersion() {
41 return preg_replace("/[Revision: $]/", '',
44 function getDefaultArguments() {
46 'page' => "[pagename]", // which pages (glob allowed), default: current
47 'relations' => '', // which relations. default all
48 'attributes' => '', // which attributes. default all
54 function run ($dbi, $argstr, &$request, $basepage) {
56 $args = $this->getArgs($argstr, $request);
59 $page = $request->getArg('pagename');
61 foreach (explodePageList($page) as $pagename) {
62 $p = $dbi->getPage($pagename);
63 $links = $p->getRelations(); // iter of pagelinks
64 // TODO: merge same relations together located_in::here, located_in::there
65 while ($object = $links->next()) {
66 if ($related = $object->get('linkrelation')) { // a page name
67 $rellink = WikiLink($related, false, $related);
68 $rellink->setAttr('class', $rellink->getAttr('class').' relation');
71 // Link to a special "Relation:" InterWiki link?
73 HTML::strong(" :: "), // use spaces?
74 WikiLink($object->_pagename),
76 // Link to SemanticSearch
77 $WikiTheme->makeActionButton(array('relation' => $related,
78 's' => $object->_pagename),
84 if (!empty($relhtml->_content) and !$noheader)
85 $relhtml = HTML(HTML::hr(),
86 HTML::h3(fmt("Semantic relations for %s", $pagename)),
89 if ($attributes = $p->get('attributes')) { // a hash of unique pairs
90 foreach ($attributes as $att => $val) {
91 $rellink = WikiLink($att, false, $att);
92 $rellink->setAttr('class', $rellink->getAttr('class').' relation');
93 $searchlink = $WikiTheme->makeActionButton
94 (array('attribute' => $att,
99 $atthtml->pushContent("$pagename ");
100 $atthtml->pushContent(HTML::span($rellink,
101 HTML::strong(" := "),
107 $relhtml = HTML($relhtml,
109 HTML::h3(fmt("Attributes of %s", $pagename)),
112 $relhtml = HTML($relhtml, $atthtml);
115 if ($nohelp) return $relhtml;
116 return HTML($relhtml,
118 WikiLink(_("Help/SemanticRelations"), false,
119 HTML::em(_("Help/SemanticRelations"))),
121 HTML::em(_("Find out how to add relations and attributes to pages.")));
126 // $Log: not supported by cvs2svn $
127 // Revision 1.2 2007/01/02 13:22:41 rurban
128 // default pagename: current. improve output: class, linked attributes. switch to SemanticSearch argument s
130 // Revision 1.1 2005/11/21 20:14:20 rurban
131 // Plugin to display the list of SemanticRelations - list of relations and
132 // attributes of given page(s).
133 // Relations are stored in the link table.
134 // Attributes as simple page meta-data.
141 // c-hanging-comment-ender-p: nil
142 // indent-tabs-mode: nil