diff options
Diffstat (limited to 'data/templates/default')
49 files changed, 3098 insertions, 0 deletions
diff --git a/data/templates/default/about.tpl.php b/data/templates/default/about.tpl.php new file mode 100644 index 0000000..843a31f --- /dev/null +++ b/data/templates/default/about.tpl.php @@ -0,0 +1,34 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<ul> +<li><?php echo T_('<strong>Store</strong> all your favourite links in one place, accessible from anywhere.'); ?></li> +<li><?php echo T_('<strong>Share</strong> your bookmarks with everyone, with friends on your watchlist or just keep them private.') ;?></li> +<li><?php echo T_('<strong>Tag</strong> your bookmarks with as many labels as you want, instead of wrestling with folders.'); ?></li> +<li><?php echo sprintf('<strong><a href="'.createURL('register').'">'.T_('Register now').'</a> </strong>'.T_(' to start using %s!'), $GLOBALS['sitename']); ?></li> +</ul> + +<h3><?php echo T_('Geek Stuff'); ?></h3> +<ul> +<li><a href="http://sourceforge.net/projects/semanticscuttle/">Semantic Scuttle</a> <?php echo T_('is licensed under the ');?> <a href="http://www.gnu.org/copyleft/gpl.html"><acronym title="GNU\'s Not Unix">GNU</acronym> General Public License</a> (<?php echo T_('you can freely host it on your own web server.'); ?>)</li> +<li><?php echo sprintf(T_('%1$s supports most of the <a href="http://www.delicious.com/help/api">del.icio.us <abbr title="Application Programming Interface">API</abbr></a>. Almost all of the neat tools made for that system can be modified to work with %1$s instead. If you find a tool that won\'t let you change the API address, ask the creator to add this setting. You never know, they might just do it.'), $GLOBALS['sitename']); ?></li> + + + +<?php if(!is_null($currentUser) && $currentUser->isAdmin()): ?> +<li>SemanticScuttle v0.98.5</li> +<?php endif ?> +</ul> + +<h3><?php echo T_('Tips'); ?></h3> +<ul> +<li><?php echo T_('Add search plugin into your browser:'); ?> <a href="#" onclick="window.external.AddSearchProvider('<?php echo ROOT?>api/opensearch.php');">opensearch</a></li> +<li><?php echo T_('The secret tag "system:unfiled" allows you to find bookmarks without tags.'); ?></li> +<li><?php echo T_('The secret tag "system:imported" allows you to find imported bookmarks.'); ?></li> +</ul> + + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/admin.tpl.php b/data/templates/default/admin.tpl.php new file mode 100644 index 0000000..50680f6 --- /dev/null +++ b/data/templates/default/admin.tpl.php @@ -0,0 +1,35 @@ +<?php
+
+$this->includeTemplate($GLOBALS['top_include']); + +echo '<h3>'.T_('Users management').'</h3>'; +
+echo '<ol id="bookmarks">';
+ +foreach($users as $user) {
+ echo '<li class="xfolkentry">'."\n";
+
+ echo '<div class="link">';
+ echo '<a href="'.createURL('profile', $user->getUsername()).'">'.$user->getUsername().'</a>'; + echo ' - <span title="'. T_('Public/Shared/Private') .'">'. $user->getNbBookmarks('public') .' / '. $user->getNbBookmarks('shared') .' / '. $user->getNbBookmarks('private') .' '. T_('bookmark(s)') .'</span>';
+ echo '</div>';
+ + if($user->getUsername() != $currentUser->getUsername()) {
+ echo '<div class="meta">';
+ echo '<a href="'.createURL('admin','delete/'.$user->getUsername()).'" onclick="return confirm(\''.T_('Are you sure?').'\');">'.T_('Delete').'</a>';
+ echo '</div>'; + }
+
+ echo '</li>'."\n";
+} +echo '</ol>'; +?> +<h3><?php echo T_('Other actions')?></h3> +<p> +<a href="<?php echo createURL('admin','checkUrl/') ?>"> <?php echo T_('Check all URLs (May take some time)') ?></a> +</p> +<?php
+$this->includeTemplate('sidebar.tpl');
+$this->includeTemplate($GLOBALS['bottom_include']);
+
+?>
diff --git a/data/templates/default/bookmarkcommondescriptionedit.tpl.php b/data/templates/default/bookmarkcommondescriptionedit.tpl.php new file mode 100644 index 0000000..807c58b --- /dev/null +++ b/data/templates/default/bookmarkcommondescriptionedit.tpl.php @@ -0,0 +1,58 @@ +<?php + +$this->includeTemplate($GLOBALS['top_include']); + +list ($url, $hash) = explode('/', $_SERVER['PATH_INFO']); + + +?> +<script type="text/javascript"> +window.onload = function() { + document.getElementById("title").focus(); +} +</script> + +<form action="<?php echo $formaction; ?>" method="post"> +<table title="<?php echo T_('Collaborative description: these fields can be viewed and modified by every users') ?>"> +<tr> + <th align="left"><?php echo T_('Title'); ?></th> + <td><input type="text" id="title" name="title" size="75" maxlength="255" value="<?php echo $description['cdTitle']; ?>" onkeypress="this.style.backgroundImage = 'none';" /></td> + <td></td> +</tr> +<tr> + <th align="left"><?php echo T_('Description'); ?></th> + <td><textarea name="description" cols="75" rows="10"><?php echo $description['cdDescription']; ?></textarea></td> +</tr> +<tr> + <td></td> + <td> + <?php + if(strlen($description['cdDatetime'])>0) { + echo T_('Last modification:').' '.$description['cdDatetime'].', '; + $lastUser = $userservice->getUser($description['uId']); + echo '<a href="'.createURL('profile', $lastUser['username']).'">' + . SemanticScuttle_Model_UserArray::getName($lastUser) . '</a>'; + } + ?> + </td> + <td></td> +</tr> +<tr> + <td></td> + <td> + <input type="submit" name="confirm" value="<?php echo T_('Update'); ?>" /> + <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" /> + </td> + <td></td> +</tr> +</table> + +<?php if (isset($referrer)): ?> +<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div> +<?php endif; ?> +<div><input type="hidden" name="hash" value="<?php echo $hash; ?>" /></div> +</form> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/bookmarklet.inc.php b/data/templates/default/bookmarklet.inc.php new file mode 100644 index 0000000..b203735 --- /dev/null +++ b/data/templates/default/bookmarklet.inc.php @@ -0,0 +1,152 @@ +<h3><?php echo T_('Bookmarklet'); ?></h3> +<p id="bookmarklet"></p> +<script type="text/javascript"> +//<![CDATA[ +var browser = navigator.appName; +jQuery(function($) { +if (browser == "Opera") { + $('#bookmarklet').append( + <?php echo json_encode( + sprintf( + T_("Click one of the following bookmarklets to add a button you can click whenever you want to add the page you are on to %s") . ':', + $GLOBALS['sitename'] + ) + ); ?> + ); +} else { + $('#bookmarklet').append( + <?php echo json_encode( + sprintf( + T_("Drag one of the following bookmarklets to your browser's bookmarks and click it whenever you want to add the page you are on to %s") . ':', + $GLOBALS['sitename'] + ) + ); + ?> + ); +} +}); +//]]> +</script> +<script type="text/javascript"> +//<![CDATA[ +var selection = ''; +if (window.getSelection) { + selection = 'window.getSelection()'; +} else if (document.getSelection) { + selection = 'document.getSelection()'; +} else if (document.selection) { + selection = 'document.selection.createRange().text'; +} +if (browser == "Opera") { + $('#bookmarklet').append( + '<ul>' + + '<li>' + + '<a class="bookmarklet" href="' + + '<?php +$popupLink = 'javascript:' + . "location.href='" + . addProtocolToUrl(createURL('bookmarks', $GLOBALS['user'])) + . '?action=add' + . "&address='+encodeURIComponent(document.location.href)+'" + . "&title='+encodeURIComponent(document.title)+'" + . "&description='+encodeURIComponent(SELECTION)" + . ";"; +$link = 'opera:/button/' + //Opera command + . 'Go to page' + //command parameter 1 + . ',"' . rawurlencode($popupLink) . '"' + //command parameter 2 + . ',' + //button title + . ',"Post to ' . fixOperaButtonName($GLOBALS['sitename']) . '"' + //button icon name + . ',"Scuttle"'; +echo jsEscTitle(htmlspecialchars($link)); +?>'.replace('SELECTION', selection) + + '"><?php echo jsEscTitle(sprintf(T_('Post to %s'), $GLOBALS['sitename'])); ?></a>' + + '</li>' + + '<li>' + + '<a class="bookmarklet" href="' + + '<?php +$popupLink = 'javascript:' + . 'open(' + . "'" . addProtocolToUrl(createURL('bookmarks', $GLOBALS['user'])) + . '?action=add' + . '&popup=1' + . "&address='+encodeURIComponent(document.location.href)+'" + . "&title='+encodeURIComponent(document.title)+'" + . "&description='+encodeURIComponent(SELECTION)" + . "," + . "'" . htmlspecialchars(jsEscTitle($GLOBALS['sitename'])) . "'," + . "'modal=1,status=0,scrollbars=1,toolbar=0,resizable=1,width=790,height=465" + . ",left='+(screen.width-790)/2+',top='+(screen.height-425)/2" + . ");void 0"; +$link = 'opera:/button/' + . 'Go to page' + . ',"' . rawurlencode($popupLink) . '"' + . ',' + . ',"Post to ' . fixOperaButtonName($GLOBALS['sitename']) . ' (Pop-up)"' + . ',"Scuttle"'; +echo jsEscTitle(htmlspecialchars($link)); +?>'.replace('SELECTION', selection) + + '"><?php echo jsEscTitle(sprintf(T_('Post to %s (Pop-up)'), $GLOBALS['sitename'])); ?></a>' + + '</li>' + + '</ul>' + ); +} else { + $('#bookmarklet').append( + '<ul>' + + '<li><a class="bookmarklet" href="javascript:x=document;a=encodeURIComponent(x.location.href);t=encodeURIComponent(x.title);d=encodeURIComponent('+selection+');location.href=\'<?php echo addProtocolToUrl(createURL('bookmarks', $GLOBALS['user'])); ?>?action=add&address=\'+a+\'&title=\'+t+\'&description=\'+d;void 0;"><?php echo jsEscTitle(sprintf(T_('Post to %s'), $GLOBALS['sitename'])); ?><\/a><\/li>' + + '<li>' + + '<a class="bookmarklet" href="' + + 'javascript:x=document;' + + 'a=encodeURIComponent(x.location.href);' + + 't=encodeURIComponent(x.title);' + + 'd=encodeURIComponent('+selection+');' + + 'open(' + + '\'<?php echo addProtocolToUrl(createURL('bookmarks', $GLOBALS['user'])); ?>?action=add&popup=1&address=\'+a+\'&title=\'+t+\'&description=\'+d,\'<?php echo htmlspecialchars(jsEscTitleDouble($GLOBALS['sitename'])); ?>\',\'modal=1,status=0,scrollbars=1,toolbar=0,resizable=1,width=790,height=465,left=\'+(screen.width-790)/2+\',top=\'+(screen.height-425)/2' + + ');void 0;">' + + '<?php echo jsEscTitle(sprintf(T_('Post to %s (Pop-up)'), $GLOBALS['sitename'])); ?>' + + '</a>' + + '</li>' + + '</ul>' + ); +} +//]]> +</script> + + +<script type="text/javascript"> +function activateSocialApi(node) { + var baseurl = <?php echo json_encode(addProtocolToUrl(createURL())); ?>; + var socialApiData = { + // currently required + "name": <?php echo json_encode($GLOBALS['sitename']); ?>, + "iconURL": baseurl + "themes/default/images/logo.png", + "icon32URL": baseurl + "themes/default/images/logo.png", + "icon64URL": baseurl + "themes/default/images/logo.png", + + "markURL": "<?php echo addProtocolToUrl(createURL('bookmarks', $GLOBALS['user'])); ?>?action=add&popup=1&width=800&height=470&address=%{url}&title=%{title}&description=%{description}%{text}", + "markedIcon": baseurl + "themes/default/images/logo.png", + "unmarkedIcon": baseurl + "themes/default/images/logo-empty.png", + + // should be available for display purposes + "description": "Self-hosted bookmark manager", + "author": "Christian Weiske", + "homepageURL": "http://semanticscuttle.sf.net/", + + // optional + "version": "0.0.3" + }; + + var event = new CustomEvent("ActivateSocialFeature"); + node.setAttribute("data-service", JSON.stringify(socialApiData)); + node.dispatchEvent(event); +} +</script> +<p> + <button onclick="activateSocialApi(this)" title="activate semanticscuttle in firefox"> + Add SemanticScuttle to Firefox + </button> +</p> diff --git a/data/templates/default/bookmarks-thumbnail.inc.tpl.php b/data/templates/default/bookmarks-thumbnail.inc.tpl.php new file mode 100644 index 0000000..b8770dc --- /dev/null +++ b/data/templates/default/bookmarks-thumbnail.inc.tpl.php @@ -0,0 +1,18 @@ +<?php +/** + * Bookmark thumbnail image + * Shows the website thumbnail for the bookmark. + * + * Expects a $row variable with bookmark data. + */ + +$thumbnailer = SemanticScuttle_Service_Factory::get('Thumbnails')->getThumbnailer(); +$imgUrl = $thumbnailer->getThumbnailUrl($address, 120, 90); +if ($imgUrl !== false) { + echo '<a href="' . htmlspecialchars($address) . '">' + . '<img class="thumbnail" width="120" height="90" src="' + . htmlspecialchars($imgUrl). + '" />' + . '</a>'; +} +?>
\ No newline at end of file diff --git a/data/templates/default/bookmarks-vote-horizontal.inc.tpl.php b/data/templates/default/bookmarks-vote-horizontal.inc.tpl.php new file mode 100644 index 0000000..c4a9f8e --- /dev/null +++ b/data/templates/default/bookmarks-vote-horizontal.inc.tpl.php @@ -0,0 +1,50 @@ +<?php +/** + * Bookmark voting badge. + * Shows the number of votes and buttons to vote for or + * against a bookmark. + * Expects a $row variable with bookmark data + */ +if (!$GLOBALS['enableVoting'] || $GLOBALS['votingMode'] != 2) { + return; +} +if (!isset($row['hasVoted'])) { + $classes = 'vote-horiz vote-horiz-inactive'; +} else if (isset($row['vote'])) { + $classes = 'vote-horiz ' + . ($row['vote'] == 1 + ? 'vote-horiz-for' + : 'vote-horiz-against' + ); +} else { + $classes = 'vote-horiz'; +} +echo '<div class="' . $classes . '" id="bmv-' . $row['bId'] . '">'; +echo sprintf( + T_('Voting <span class="voting">%d</span>'), $row['bVoting'] +) . ' '; + +if (isset($row['hasVoted'])) { + if ($row['vote'] != 1) { + echo '<a class="vote-for" rel="nofollow" href="' + . createVoteURL(true, $row['bId']) . '"' + . ' onclick="javascript:vote(' . $row['bId'] . ',1); return false;"' + . '>' . T_('Vote for') . '</a> '; + } else { + echo '<span class="vote-for-inactive">' + . T_('Vote for') . '</span> '; + } + + + if ($row['vote'] != -1) { + echo '<a class="vote-against" rel="nofollow" href="' + . createVoteURL(false, $row['bId']) . '"' + . ' onclick="vote(' . $row['bId'] . ',-1); return false;"' + . '>' . T_('Vote against') . '</a>'; + } else { + echo '<span class="vote-against-inactive">' + . T_('Vote against') . '</span>'; + } +} +echo '</div>'; +?>
\ No newline at end of file diff --git a/data/templates/default/bookmarks-vote.inc.tpl.php b/data/templates/default/bookmarks-vote.inc.tpl.php new file mode 100644 index 0000000..41572d5 --- /dev/null +++ b/data/templates/default/bookmarks-vote.inc.tpl.php @@ -0,0 +1,44 @@ +<?php +/** + * Bookmark voting badge. + * Shows the number of votes and buttons to vote for or + * against a bookmark. + * Expects a $row variable with bookmark data + */ +if (!$GLOBALS['enableVoting'] || $GLOBALS['votingMode'] != 1) { + return; +} +if (isset($row['hasVoted']) && !$row['hasVoted']) { + $classes = 'vote-badge vote-badge-inactive'; +} else if (isset($row['vote'])) { + $classes = 'vote-badge ' + . ($row['vote'] == 1 + ? 'vote-badge-for' + : 'vote-badge-against' + ); +} else { + $classes = 'vote-badge'; +} +echo '<span class="' . $classes . '" id="bmv-' . $row['bId'] . '">'; + +if (isset($row['hasVoted']) && $row['vote'] != 1) { + echo '<a class="vote-for" rel="nofollow" href="' + . createVoteURL(true, $row['bId']) . '"' + . ' onclick="javascript:vote(' . $row['bId'] . ',1); return false;"' + . '>+</a>'; +} else { + echo '<span class="vote-for vote-for-inactive">+</span>'; +} + +echo '<span class="voting">' . $row['bVoting'] . '</span>'; + +if (isset($row['hasVoted']) && $row['vote'] != -1) { + echo '<a class="vote-against" rel="nofollow" href="' + . createVoteURL(false, $row['bId']) . '"' + . ' onclick="vote(' . $row['bId'] . ',-1); return false;"' + . '>-</a>'; +} else { + echo '<span class="vote-against vote-against-inactive">-</span>'; +} +echo '</span>'; +?>
\ No newline at end of file diff --git a/data/templates/default/bookmarks.tpl.php b/data/templates/default/bookmarks.tpl.php new file mode 100644 index 0000000..20b5336 --- /dev/null +++ b/data/templates/default/bookmarks.tpl.php @@ -0,0 +1,547 @@ +<?php +/** + * Show a list of bookmarks. + * + * SemanticScuttle - your social bookmark manager. + * + * PHP version 5. + * + * @category Bookmarking + * @package SemanticScuttle + * @subcategory Templates + * @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net> + * @author Christian Weiske <cweiske@cweiske.de> + * @author Eric Dane <ericdane@users.sourceforge.net> + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ + +/* Service creation: only useful services are created */ +$bookmarkservice = SemanticScuttle_Service_Factory::get('Bookmark'); +$tagservice = SemanticScuttle_Service_Factory::get('Tag'); +$cdservice = SemanticScuttle_Service_Factory::get('CommonDescription'); + + +$pageName = isset($pageName) ? $pageName : ''; +$user = isset($user) ? $user : ''; +$currenttag = isset($currenttag) ? $currenttag : ''; + + +$this->includeTemplate($GLOBALS['top_include']); + +include('search.menu.php'); +?> + +<?php if($pageName == PAGE_INDEX && $GLOBALS['welcomeMessage']):?> +<p id="welcome"><?php echo $GLOBALS['welcomeMessage'];?></p> +<?php endif?> + + +<?php if($GLOBALS['enableAdminColors']!=false && isset($userid) && $userservice->isAdmin($userid) && $pageName != PAGE_WATCHLIST) : ?> +<div style="width:70%;text-align:center;"> + <img src="<?php echo $theme->resource('images/logo_24.gif'); ?>" width="12px"/> + <?php echo T_('Bookmarks on this page are managed by an admin user.'); ?> + <img src="<?php echo $theme->resource('images/logo_24.gif'); ?>" width="12px"/> +</div> +<?php endif?> + + +<?php +// common tag description +if(($currenttag!= '' && $GLOBALS['enableCommonTagDescription']) +|| (isset($hash) && $GLOBALS['enableCommonBookmarkDescription'])):?> + + +<p class="commondescription"><?php +$cDescription = ''; +if($currenttag!= '' && $cdservice->getLastTagDescription($currenttag)) { + $cDescription = $cdservice->getLastTagDescription($currenttag); + echo nl2br(filter($cDescription['cdDescription'])); +} elseif(isset($hash) && $cdservice->getLastBookmarkDescription($hash)) { + $cDescription = $cdservice->getLastBookmarkDescription($hash); + echo nl2br(filter($cDescription['cdTitle'])). "<br/>"; + echo nl2br(filter($cDescription['cdDescription'])). "<br/>"; +} + +//common tag description edit +if ($userservice->isLoggedOn()) { + if ($currenttag != '' + && ($GLOBALS['enableCommonTagDescriptionEditedByAll'] + || $currentUser->isAdmin() + ) + ) { + echo ' <a href="'. createURL('tagcommondescriptionedit', $currenttag).'" title="'.T_('Edit the common description of this tag').'">'; + echo !is_array($cDescription) || strlen($cDescription['cdDescription'])==0?T_('Edit the common description of this tag'):''; + echo ' <img src="' . $theme->resource('images/b_edit.png') . '" /></a>'; + } else if (isset($hash)) { + echo ' (<a href="'.createURL('bookmarkcommondescriptionedit', $hash).'" title="'.T_('Edit the common description of this bookmark').'">'; + echo T_('Edit the common description of this bookmark').'</a>)'; + } +} +?></p> +<?php endif ?> + + +<?php +/* personal tag description */ +if($currenttag!= '' && $user!='') { + $userObject = $userservice->getUserByUsername($user); + if($tagservice->getDescription($currenttag, $userObject['uId'])) { ?> + +<p class="commondescription"><?php +$pDescription = $tagservice->getDescription($currenttag, $userObject['uId']); +echo nl2br(filter($pDescription['tDescription'])); + +//personal tag description edit +if($userservice->isLoggedOn()) { + if($currenttag!= '') { + echo ' <a href="'. createURL('tagedit', $currenttag).'" title="'.T_('Edit your personal description of this tag').'" >'; + echo strlen($pDescription['tDescription'])==0?T_('Edit your personal description of this tag'):''; + echo ' <img src="' . $theme->resource('images/b_edit.png') . '" /></a>'; + } +} +?></p> + +<?php + } +} +?> + +<?php if (isset($bookmarks) && count($bookmarks) > 0) { ?> +<script type="text/javascript"> +window.onload = playerLoad; +</script> + +<?php if (count($bookmarks) > 1) { ?> +<p id="sort"><?php echo $total.' '.T_("bookmark(s)"); ?> - <?php echo T_("Sort by:"); ?> + <?php +$titleArrow = ''; +$dateArrow = ''; +$votingArrow = ''; +$dateSort = 'date_desc'; +$titleSort = 'title_asc'; +$votingSort = 'voting_desc'; + +switch(getSortOrder()) { +case 'date_asc': + $dateArrow = ' ↑'; + $dateSort = 'date_desc'; + break; + +case 'title_asc': + $titleArrow = ' ↑'; + $titleSort = 'title_desc'; + break; + +case 'title_desc': + $titleArrow = ' ↓'; + $titleSort = 'title_asc'; + break; + +case 'voting_asc': + $votingArrow = ' ↑'; + $votingSort = 'voting_desc'; + break; + +case 'voting_desc': + $votingArrow = ' ↓'; + $votingSort = 'voting_asc'; + break; + +case 'date_desc': +default: + $dateArrow = ' ↓'; + $dateSort = 'date_asc'; + break; +} +?> + <a href="?sort=<?php echo $dateSort ?>"><?php echo T_("Date").$dateArrow; ?></a> + <span>/</span> + <a href="?sort=<?php echo $titleSort ?>"><?php echo T_("Title").$titleArrow; ?></a> + <span>/</span> +<?php if ($GLOBALS['enableVoting']) { ?> + <a href="?sort=<?php echo $votingSort ?>"><?php echo T_("Voting").$votingArrow; ?></a> + <span>/</span> +<?php } ?> +<?php } ?> + +<?php +if ($currenttag!= '') { + if ($user!= '') { + echo ' - '; + echo '<a href="'. createURL('tags', $currenttag) .'">'; + echo T_('Bookmarks from other users for this tag').'</a>'; + //echo T_(' for these tags'); + } else if ($userservice->isLoggedOn()){ + echo ' - '; + echo '<a href="'. createURL('bookmarks', $currentUser->getUsername().'/'.$currenttag) .'">'; + echo T_('Only your bookmarks for this tag').'</a>'; + //echo T_(' for these tags'); + } +} +?></p> + +<?php + // PAGINATION + + // Ordering + $sortOrder = ''; + if (GET_SORT != '') { + $sortOrder = 'sort=' . getSortOrder(); + } + + $sortAmp = (($sortOrder) ? '&'. $sortOrder : ''); + $sortQue = (($sortOrder) ? '?'. $sortOrder : ''); + + // Previous + $perpage = getPerPageCount($currentUser); + if (!$page || $page < 2) { + $page = 1; + $start = 0; + $bfirst = '<span class="disable">'. T_('First') .'</span>'; + $bprev = '<span class="disable">'. T_('Previous') .'</span>'; + } else { + $prev = $page - 1; + $prev = 'page='. $prev; + $start = ($page - 1) * $perpage; + $bfirst= '<a href="'. sprintf($nav_url, $user, $currenttag, '') . $sortQue .'">'. T_('First') .'</a>'; + $bprev = '<a href="'. sprintf($nav_url, $user, $currenttag, '?') . $prev . $sortAmp .'">'. T_('Previous') .'</a>'; + } + + // Next + $next = $page + 1; + $totalpages = ceil($total / $perpage); + if (count($bookmarks) < $perpage || $perpage * $page == $total) { + $bnext = '<span class="disable">'. T_('Next') .'</span>'; + $blast = '<span class="disable">'. T_('Last') ."</span>\n"; + } else { + $bnext = '<a href="'. sprintf($nav_url, $user, $currenttag, '?page=') . $next . $sortAmp .'">'. T_('Next') .'</a>'; + $blast = '<a href="'. sprintf($nav_url, $user, $currenttag, '?page=') . $totalpages . $sortAmp .'">'. T_('Last') ."</a>\n"; + } + + // RSS + $brss = ''; + $size = count($rsschannels); + for ($i = 0; $i < $size; $i++) { + $brss = '<a style="background:#FFFFFF"' + . ' href="'. htmlspecialchars($rsschannels[$i][1]) . '"' + . ' title="' . htmlspecialchars($rsschannels[$i][0]) . '">' + . '<img src="' . $theme->resource('images/rss.gif') . '"' + . ' width="16" height="16"' + . ' alt="' . htmlspecialchars($rsschannels[$i][0]) .'"/>' + . '</a>'; + } + + $pagesBanner = '<p class="paging">'. $bfirst .'<span> / </span>'. $bprev .'<span> / </span>'. $bnext .'<span> / </span>'. $blast .'<span> / </span>'. sprintf(T_('Page %d of %d'), $page, $totalpages) ." ". $brss ." </p>\n"; + + if (getPerPageCount($currentUser) > 10) { + echo $pagesBanner; // display a page banner if too many bookmarks to manage + } + + +?> + + + +<ol<?php echo ($start > 0 ? ' start="'. ++$start .'"' : ''); ?> id="bookmarks"> +<?php + $addresses = array(); + foreach ($bookmarks as $key => &$row) { + $addresses[$row['bId']] = $row['bAddress']; + } + $otherCounts = $bookmarkservice->countOthers($addresses); + if ($userservice->isLoggedOn()) { + $existence = $bookmarkservice->bookmarksExist( + $addresses, $currentUser->getId() + ); + } + + if ($userservice->isLoggedOn()) { + $watchedNames = $userservice->getWatchNames( + $currentUser->getId(), true + ); + } else { + $watchedNames = null; + } + + foreach ($bookmarks as $key => &$row) { + switch ($row['bStatus']) { + case 0: + $access = ''; + break; + case 1: + $access = ' shared'; + break; + case 2: + $access = ' private'; + break; + } + + // Add username in case bookmark was loaded using getBookmark() + if (!isset($row['username']) && isset($row['uId'])) { + $userinfo = $userservice->getObjectUser($row['uId']); + $row['username'] = $userinfo->username; + } + + $cats = ''; + $tagsForCopy = ''; + $tags = $row['tags']; + foreach ($tags as $tkey => &$tag) { + $tagcaturl = sprintf( + $cat_url, + filter($row['username'], 'url'), + filter($tag, 'url') + ); + $cats .= sprintf( + '<a href="%s" rel="tag">%s</a>, ', + $tagcaturl, filter($tag) + ); + $tagsForCopy .= $tag . ','; + } + $cats = substr($cats, 0, -2); + if ($cats != '') { + $cats = T_('Tags:') . ' ' . $cats; + } + + // Edit and delete links + $edit = ''; + if ($bookmarkservice->editAllowed($row)) { + $edit = ' - <a href="' . createURL('edit', $row['bId']) . '">' + . T_('Edit') + . '</a>' + . ' <a href="#" onclick="deleteBookmark(this, '. $row['bId'] .'); return false;">' + . T_('Delete') + .'</a>'; + } + + // Last update + $update = ' <small title="'. T_('Last update') .'">('. date($GLOBALS['shortdate'], strtotime($row['bModified'])). ') </small>'; + + // User attribution + if ($userservice->isLoggedOn() + && $currentUser->getUsername() == $row['username'] + ) { + $copy = ' ' . T_('by') . ' '; + $copy .= T_('you'); + } else if (isset($row['username'])) { + $copy = ' ' . T_('by') . ' '; + $copy .= '<a href="' . createURL('bookmarks', $row['username']) . '">' + . SemanticScuttle_Model_UserArray::getName($row) + . '</a>'; + } + + // others + if (!isset($hash)) { + $others = $otherCounts[$row['bAddress']]; + $ostart = '<a href="' . createURL('history', $row['bHash']) . '">'; + $oend = '</a>'; + switch ($others) { + case 0: + break; + case 1: + $copy .= sprintf(T_(' and %s1 other%s'), $ostart, $oend); + break; + default: + $copy .= sprintf(T_(' and %2$s%1$s others%3$s'), $others, $ostart, $oend); + } + } + + // Local cache + $cacheInfo = $GLOBALS['dir_cache'] .'/urls'; + $cacheLink = null; + if ($GLOBALS['cacheUrl'] != null) { + // Hashing discussion at http://linuxprocess.free.fr/MHonArc/Oct-2005/msg00016.html + $assetHash = sha1($row['bAddress'] . "\n"); + $assetHash = substr($assetHash, 0, 2) . '/' . substr($assetHash, 2, 2) . '/' . $assetHash; + $assetBase = $GLOBALS['cacheUrl'] . '/' . $assetHash; + $assetLink = $assetBase; + $assetPdf = $assetBase.'/screenshot.pdf'; + $assetPng = $assetBase .'/screenshot.png'; + + // Handle PDF links + $assetFile = basename(parse_url($row['bAddress'])['path']); + $assetExt = strtolower(pathinfo($assetFile, PATHINFO_EXTENSION)); + if ($assetExt == 'pdf') { + $assetLink = $GLOBALS['cacheUrl'] . '/' . $assetHash . '/' . $assetFile; + } + + // Check if the link exists + if (file_exists($cacheInfo .'/'. $assetHash .'/hascache')) { + $cacheLink = "| <a href=\"$assetLink\">Cache</a>"; + + if (file_exists($cacheInfo .'/'. $assetHash .'/haspdf')) { + $cacheLink .= " | <a href=\"$assetPdf\">PDF</a>"; + } + + if (file_exists($cacheInfo .'/'. $assetHash .'/haspng')) { + $cacheLink .= " | <a href=\"$assetPng\">PNG</a>"; + } + } + else if ($fp = curl_init($assetBase)) { + curl_setopt($fp, CURLOPT_NOBODY, true); + curl_exec($fp); + + $retcode = curl_getinfo($fp, CURLINFO_HTTP_CODE); + + if ($retcode != 404) { + if (!file_exists($cacheInfo .'/'. $assetHash)) { + mkdir($cacheInfo .'/'. $assetHash, 0755, true); + } + + touch($cacheInfo .'/'. $assetHash .'/hascache'); + $cacheLink = "| <a href=\"$assetLink\">Cache</a>"; + + // Check if PDF is available + if ($fp = curl_init($assetPdf)) { + curl_setopt($fp, CURLOPT_NOBODY, true); + curl_exec($fp); + + $retcode = curl_getinfo($fp, CURLINFO_HTTP_CODE); + + if ($retcode != 404) { + touch($cacheInfo .'/'. $assetHash .'/haspdf'); + $cacheLink .= " | <a href=\"$assetPdf\">PDF</a>"; + } + + curl_close($fp); + } + + // Check if PNG is available + if ($fp = curl_init($assetPng)) { + curl_setopt($fp, CURLOPT_NOBODY, true); + curl_exec($fp); + + $retcode = curl_getinfo($fp, CURLINFO_HTTP_CODE); + + if ($retcode != 404) { + touch($cacheInfo .'/'. $assetHash .'/haspng'); + $cacheLink .= " | <a href=\"$assetPng\">PNG</a>"; + } + + curl_close($fp); + } + } + + curl_close($fp); + } + } + + // Copy link + if ($userservice->isLoggedOn() + && ($currentUser->getId() != $row['uId']) + && !$existence[$row['bAddress']] + ) { + $copy .= ' - <a href="' + . createURL( + 'bookmarks', + $currentUser->getUsername() + . '?action=add&copyOf=' . $row['bId']) + . '" title="'.T_('Copy this bookmark to YOUR bookmarks.').'">' + . T_('Copy') + . '</a>'; + } + + // Nofollow option + $rel = ''; + if ($GLOBALS['nofollow']) { + $rel = ' rel="nofollow"'; + } + + $address = $row['bAddress']; + $oaddress = $address; + // Redirection option + if ($GLOBALS['useredir']) { + $address = $GLOBALS['url_redir'] . $address; + } + + // Admin specific design + if ($userservice->isAdmin($row['username']) + && $GLOBALS['enableAdminColors'] + ) { + $adminBgClass = ' class="adminBackground"'; + $adminStar = ' <img' + . ' src="' . $theme->resource('images/logo_24.gif') . '"' + . ' width="12px"' + . ' title="' . T_('This bookmark is certified by an admin user.') . '"' + . '/>'; + } else { + $adminBgClass = ''; + $adminStar = ''; + } + + // Private Note (just visible by the owner and his/her contacts) + if ($watchedNames !== null + && ($currentUser->getId() == $row['uId'] + || in_array($row['username'], $watchedNames) + ) + ) { + $privateNoteField = $row['bPrivateNote']; + } else { + $privateNoteField = ''; + } + + if ($GLOBALS['enableVoting'] && $GLOBALS['hideBelowVoting'] !== null + && $row['bVoting'] < $GLOBALS['hideBelowVoting'] + ) { + $access .= ' below-threshold'; + } + + // Output + echo ' <li class="xfolkentry'. $access .'">'."\n"; + include 'bookmarks-thumbnail.inc.tpl.php'; + include 'bookmarks-vote.inc.tpl.php'; + + echo ' <div' . $adminBgClass . '>' . "\n"; + + echo ' <div class="link">' + . '<a href="'. htmlspecialchars($address) .'"'. $rel .' class="taggedlink">' + . filter($row['bTitle']) + . '</a>' . $adminStar . "</div>\n"; + if ($row['bDescription'] == '') { + $bkDescription = $GLOBALS['blankDescription']; + } else { + // Improve description display (anchors, links, ...) + $bkDescription = preg_replace('|\[\/.*?\]|', '', filter($row['bDescription'])); // remove final anchor + $bkDescription = preg_replace('|\[(.*?)\]|', ' <span class="anchorBookmark">$1</span> » ', $bkDescription); // highlight starting anchor + $bkDescription = preg_replace('@((http|https|ftp)://.*?)( |\r|$)@', '<a href="$1" rel="nofollow">$1</a>$3', $bkDescription); // make url clickable + + } + echo ' <div class="description">'. nl2br($bkDescription) ."</div>\n"; + echo ' <div class="address">' . htmlspecialchars(shortenString($oaddress)) . "</div>\n"; + + echo ' <div class="meta">' + . $cats . "\n" + . $copy . "\n" + . $edit . "\n" + . $update . "\n" + . $cacheLink ."\n" + . ' | <a href="/permalink/'. $row['bId'] . '">Permalink</a>' ."\n" + . " </div>\n"; + echo $privateNoteField != '' + ? ' <div class="privateNote" title="'. T_('Private Note on this bookmark') .'">'.$privateNoteField."</div>\n" + : ''; + echo ' '; + include 'bookmarks-vote-horizontal.inc.tpl.php'; + echo " </div>\n"; + + echo " </li>\n"; + } + ?> + +</ol> + + <?php + if(getPerPageCount($currentUser)>7) { + echo '<p class="backToTop"><a href="#header" title="'.T_('Come back to the top of this page.').'">'.T_('Top of the page').'</a></p>'; + } + + if (isset($bookmarks) && count($bookmarks) > 1) { + echo $pagesBanner; // display previous and next links pages + RSS link + } + +} else { + echo '<p class="error">'.T_('No bookmarks available').'</p>'; +} +$this->includeTemplate('sidebar.tpl'); +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/bottom.inc.php b/data/templates/default/bottom.inc.php new file mode 100644 index 0000000..9e4014c --- /dev/null +++ b/data/templates/default/bottom.inc.php @@ -0,0 +1,29 @@ +<!--following code is generated by templates/bottom.inc.php--> +<div id="bottom"> +<?php echo $GLOBALS['footerMessage'].' ';?> +<?php +echo '<a href="'.createURL('about').'">'.T_('About').'</a>'; +echo ' - '; +echo T_("Propulsed by "); +echo " <a href=\"https://sourceforge.net/projects/semanticscuttle/\">SemanticScuttle</a>"; +?> + +</div> + + +<?php if(isset($GLOBALS['googleAnalyticsCode']) && $GLOBALS['googleAnalyticsCode']!= ''):?> + +<script type="text/javascript"> +var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); +document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); +</script> +<script type="text/javascript"> +try { +var pageTracker = _gat._getTracker("<?php echo $GLOBALS['googleAnalyticsCode']?>"); +pageTracker._trackPageview(); +} catch(err) {}</script> + +<?php endif;?> + +</body> +</html> diff --git a/data/templates/default/dynamictags.inc.php b/data/templates/default/dynamictags.inc.php new file mode 100644 index 0000000..c2ab6d4 --- /dev/null +++ b/data/templates/default/dynamictags.inc.php @@ -0,0 +1,148 @@ +<?php +/*************************************************************************** + Copyright (C) 2005 - 2006 Scuttle project + http://sourceforge.net/projects/scuttle/ + http://scuttle.org/ + + 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 + ***************************************************************************/ + +/* Service creation: only useful services are created */ +$b2tservice = SemanticScuttle_Service_Factory :: get('Bookmark2Tag'); + +$logged_on_userid = $userservice->getCurrentUserId(); + +//tags from current user +$userPopularTags = $b2tservice->getPopularTags($logged_on_userid, 25, $logged_on_userid); +$userPopularTagsCloud = $b2tservice->tagCloud($userPopularTags, 5, 90, 175); +$userPopularTagsCount = count($userPopularTags); + +//tags from all users +$allPopularTags = $b2tservice->getPopularTags(null, 5, $logged_on_userid); +$allPopularTagsCloud = $b2tservice->tagCloud($allPopularTags, 5, 90, 175); +$allPopularTagsCount = count($allPopularTags); + + +// function printing the cloud +function writeTagsProposition($tagsCloud, $title) +{ + static $id = 0; + ++$id; + + echo <<<JS + $('.edit-tagclouds') + .append( +'<div class="collapsible" id="edit-tagcloud-$id">' ++ ' <h3>$title</h3>' ++ ' <p class="popularTags tags"></p>' ++ '</div>'); +JS; + + $taglist = ''; + foreach (array_keys($tagsCloud) as $key) { + $row = $tagsCloud[$key]; + $entries = T_ngettext('bookmark', 'bookmarks', $row['bCount']); + $taglist .= '<span' + . ' title="'. $row['bCount'] . ' ' . $entries . '"' + . ' style="font-size:' . $row['size'] . '"' + . ' onclick="addTag(this)">' + . filter($row['tag']) + . '</span> '; + } + echo '$(\'#edit-tagcloud-' . $id . ' p\').append(' + . json_encode($taglist) + . ");\n"; +} + + +if ($allPopularTagsCount > 0 || $userPopularTagsCount > 0 ) { ?> +<script type="text/javascript"> +//<![CDATA[ +Array.prototype.contains = function (ele) { + for (var i = 0; i < this.length; i++) { + if (this[i] == ele) { + return true; + } + } + return false; +}; + +Array.prototype.remove = function (ele) { + var arr = new Array(); + var count = 0; + for (var i = 0; i < this.length; i++) { + if (this[i] != ele) { + arr[count] = this[i]; + count++; + } + } + return arr; +}; + +function addonload(addition) { + //var existing = window.onload; + window.onload = function () { + //existing(); + addition(); + } +} + +jQuery(function($) { +<?php +if ($userPopularTagsCount > 0) { + writeTagsProposition($userPopularTagsCloud, T_('Popular Tags')); +} +if ($allPopularTagsCount > 0) { + writeTagsProposition($allPopularTagsCloud, T_('Popular Tags From All Users')); +} +?> + var taglist = $('#tags'); + var tags = taglist.val().split(', '); + + var populartags = $('.edit-tagclouds span'); + + for (var i = 0; i < populartags.length; i++) { + if (tags.contains(populartags[i].innerHTML)) { + populartags[i].className = 'selected'; + } + } +}); + +function addTag(ele) { + var thisTag = ele.innerHTML; + var taglist = document.getElementById('tags'); + var tags = taglist.value.split(', '); + + // If tag is already listed, remove it + if (tags.contains(thisTag)) { + tags = tags.remove(thisTag); + ele.className = 'unselected'; + + // Otherwise add it + } else { + tags.splice(0, 0, thisTag); + ele.className = 'selected'; + } + + taglist.value = tags.join(', '); + + document.getElementById('tags').focus(); +} +//]]> +</script> +<div class="edit-tagclouds"></div> +<?php +} +?> diff --git a/data/templates/default/editbookmark.tpl.php b/data/templates/default/editbookmark.tpl.php new file mode 100644 index 0000000..8b71230 --- /dev/null +++ b/data/templates/default/editbookmark.tpl.php @@ -0,0 +1,221 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); + +$accessPublic = ''; +$accessShared = ''; +$accessPrivate = ''; +switch ($row['bStatus']) { + case 0 : + $accessPublic = ' selected="selected"'; + break; + case 1 : + $accessShared = ' selected="selected"'; + break; + case 2 : + $accessPrivate = ' selected="selected"'; + break; +} + +function jsEscTitle($title) +{ + return addcslashes($title, "'"); +} +function jsEscTitleDouble($title) +{ + return addcslashes(addcslashes($title, "'"), "'\\"); +} +function fixOperaButtonName($name) { + //yes, opera has problems with double quotes in button names + return str_replace('"', "''", $name); +} + +if (is_array($row['tags'])) { + $row['tags'] = implode(', ', $row['tags']); +} + +$ajaxUrl = ROOT . 'ajax/' + . ( + ($GLOBALS['adminsAreAdvisedTagsFromOtherAdmins'] && $currentUser->isAdmin()) + ? 'getadmintags' + : 'getcontacttags' + ) . '.php'; +?> +<form action="<?php echo $formaction; ?>" method="post"> +<table> +<tr> + <th align="left"><?php echo T_('Address'); ?></th> + <td><input type="text" id="address" name="address" size="75" maxlength="65535" value="<?php echo filter($row['bAddress'], 'xml'); ?>" onblur="useAddress(this)" /></td> + <td>← <?php echo T_('Required'); ?></td> +</tr> +<tr> + <th align="left"><?php echo T_('Title'); ?></th> + <td><input type="text" id="titleField" name="title" size="75" maxlength="255" value="<?php echo filter($row['bTitle'], 'xml'); ?>" onkeypress="this.style.backgroundImage = 'none';" /></td> + <td>← <?php echo T_('Required'); ?></td> +</tr> +<tr> + <th align="left"> + <?php echo T_('Description'); ?> + <a onclick="var nz = document.getElementById('privateNoteZone'); nz.style.display='';this.style.display='none';"><?php echo T_("Add Note"); ?></a> + </th> + <td><textarea name="description" id="description" rows="5" cols="63" ><?php echo filter($row['bDescription'], 'xml'); ?></textarea></td> + <td>← <?php echo T_('You can use anchors to delimite attributes. for example: [publisher]blah[/publisher] '); ?> + <?php if(count($GLOBALS['descriptionAnchors'])>0): ?> + <br /><br /> + <?php echo T_('Suggested anchors: '); ?> + <?php foreach($GLOBALS['descriptionAnchors'] as $anchorName => $anchorValue): ?> + <?php if(is_numeric($anchorName)) { + $anchorName = $anchorValue; + $anchorValue = '['.$anchorValue.']'.'[/'.$anchorValue.']'; + } ?> + <span class="anchor" title="<?php echo $anchorValue ?>" onclick="addAnchor('<?php echo $anchorValue ?>', 'description')"><?php echo $anchorName ?></span> + <?php endforeach; ?> + <?php endif; ?> + </td> +</tr> +<tr id="privateNoteZone" <?php if(strlen($row['bPrivateNote'])==0):?>style="display:none"<?php endif; ?>> + <th align="left"><?php echo T_('Private Note'); ?></th> + <td><textarea name="privateNote" id="privateNote" rows="1" cols="63" ><?php echo filter($row['bPrivateNote'], 'xml'); ?></textarea></td> + <td>← <?php echo T_('Just visible by you and your contacts.'); ?> + </td> +</tr> +<tr> + <th align="left"><?php echo T_('Tags'); ?></th> + <td class="scuttletheme"> + <input type="text" id="tags" name="tags" size="75" value="<?php echo filter($row['tags'], 'xml'); ?>"/> + </td> + <td>← <?php echo T_('Comma-separated'); ?></td> +</tr> +<tr> + <th></th> + <td align="right"><small><?php echo htmlspecialchars(T_('Note: use ">" to include one tag in another. e.g.: europe>france>paris'))?></small></td> +</tr> +<tr> + <th></th> + <td align="right"><small><?php echo T_('Note: use "=" to make synonym two tags. e.g.: france=frenchcountry')?></small></td> +</tr> +<tr> + <th align="left"><?php echo T_('Privacy'); ?></th> + <td> + <select name="status"> + <option value="0"<?php echo $accessPublic ?>><?php echo T_('Public'); ?></option> + <option value="1"<?php echo $accessShared ?>><?php echo T_('Shared with Watch List'); ?></option> + <option value="2"<?php echo $accessPrivate ?>><?php echo T_('Private'); ?></option> + </select> + </td> + <td></td> +</tr> +<tr> + <td></td> + <td> + <input type="submit" name="submitted" value="<?php echo $btnsubmit; ?>" /> + <input type="button" name="cancel" value="<?php echo T_('Cancel') ?>" onclick="<?php echo $popup?'window.close();':'javascript: history.go(-1)'; ?>" /> + <?php + if (isset($showdelete) && $showdelete) { + ?> + <input type="submit" name="delete" value="<?php echo T_('Delete Bookmark'); ?>" /> + <?php + } + if (isset($showdelete) && $showdelete) { + echo ' (<a href="'.createURL('bookmarkcommondescriptionedit', $row['bHash']).'">'; + echo T_('edit common description').'</a>)'; + } + + if ($popup) { + ?> + <input type="hidden" name="popup" value="1" /> + <?php + } elseif (isset($referrer)) { + ?> + <input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /> + <?php + } + ?> + </td> + <td></td> + </tr> + </table> +</form> + +<link href="<?php echo ROOT ?>js/jquery-ui-1.8.11/themes/base/jquery.ui.all.css" rel="stylesheet" type="text/css"/> + +<script type="text/javascript" src="<?php echo ROOT ?>js/jquery-ui-1.8.11/jquery.ui.core.js"></script> +<script type="text/javascript" src="<?php echo ROOT ?>js/jquery-ui-1.8.11/jquery.ui.widget.js"></script> +<script type="text/javascript" src="<?php echo ROOT ?>js/jquery-ui-1.8.11/jquery.ui.position.js"></script> +<script type="text/javascript" src="<?php echo ROOT ?>js/jquery-ui-1.8.11/jquery.ui.autocomplete.js"></script> +<script type="text/javascript"> +//<![CDATA[ +jQuery(document).ready(function() { + function split(val) + { + return val.split(/[,=><]\s*/); + } + + function extractLast(term) + { + return split(term).pop(); + } + //var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]; + + jQuery("input#tags").autocomplete({ + autoFocus: true, + minLength: 1, + + source: function(request, response) { + // delegate back to autocomplete, but extract the last term + var term = extractLast(request.term); + if (term.length < this.options.minLength) { + return; + } + response( + /* + $.ui.autocomplete.filter( + availableTags, extractLast(request.term) + ) + */ + $.getJSON( + "<?php echo $ajaxUrl; ?>", + { beginsWith: term }, + response + ) + ); + }, + + focus: function() { + // prevent value inserted on focus + return false; + }, + select: function(event, ui) { + var terms = split(this.value); + // remove the current input + terms.pop(); + // add the selected item + terms.push(ui.item.value); + // add placeholder to get the comma-and-space at the end + terms.push(""); + this.value = terms.join(", "); + return false; + } + }); +}); +//]]> +</script> + +<?php +// Dynamic tag selection +$this->includeTemplate('dynamictags.inc'); + +// Bookmarklets and import links +if (empty($_REQUEST['popup']) && (!isset($showdelete) || !$showdelete)) { + +$this->includeTemplate('bookmarklet.inc.php'); +?> +<h3><?php echo T_('Import'); ?></h3> +<ul> + <li><a href="<?php echo createURL('importNetscape'); ?>"><?php echo T_('Import bookmarks from bookmark file'); ?></a> (<?php echo T_('Internet Explorer, Mozilla Firefox and Netscape'); ?>)</li> + <li><a href="<?php echo createURL('import'); ?>"><?php echo T_('Import bookmarks from del.icio.us'); ?></a></li> +</ul> + +<?php +} +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/editprofile-sslclientcerts.tpl.php b/data/templates/default/editprofile-sslclientcerts.tpl.php new file mode 100644 index 0000000..900c193 --- /dev/null +++ b/data/templates/default/editprofile-sslclientcerts.tpl.php @@ -0,0 +1,60 @@ +<?php +/** + * User's own profile page: SSL client certificate settings + * + * @param array $sslClientCerts Array of SSL client certificate objects + * @param string $formaction URL where to send the forms to + * @param SemanticScuttle_Model_User_SslClientCert + * $currentCert Current SSL client certificate (may be null) + */ +?> +<h3><?php echo T_('SSL client certificates'); ?></h3> +<?php if (count($sslClientCerts)) { ?> +<table> + <thead> + <tr> + <th>Options</th> + <th><?php echo T_('Serial'); ?></th> + <th><?php echo T_('Name'); ?></th> + <th><?php echo T_('Email'); ?></th> + <th><?php echo T_('Issuer'); ?></th> + </tr> + </thead> + <tbody> + <?php foreach($sslClientCerts as $cert) { ?> + <tr <?php if ($cert->isCurrent()) { echo 'class="ssl-current"'; } ?>> + <td> + <form method="post" action="<?php echo $formaction; ?>"> + <input type="hidden" name="certId" value="<?php echo $cert->id; ?>"/> + <button type="submit" name="action" value="deleteClientCert"> + <?php echo T_('delete'); ?> + </button> + </form> + </td> + <td><?php echo htmlspecialchars($cert->sslSerial); ?></td> + <td><?php echo htmlspecialchars($cert->sslName); ?></td> + <td><?php echo htmlspecialchars($cert->sslEmail); ?></td> + <td><?php echo htmlspecialchars($cert->sslClientIssuerDn); ?></td> + </tr> + <?php } ?> + </tbody> +</table> +<?php } else { ?> + <p><?php echo T_('No certificates registered'); ?></p> +<?php } ?> + +<?php if ($currentCert) { ?> + <?php if ($currentCert->isRegistered($sslClientCerts)) { ?> + <p><?php echo T_('Your current certificate is already registered with your account.'); ?></p> + <?php } else { ?> + <p> + <form method="post" action="<?php echo $formaction; ?>"> + <button type="submit" name="action" value="registerCurrentCert"> + <?php echo T_('Register current certificate to automatically login.'); ?> + </button> + </form> + </p> + <?php } ?> +<?php } else { ?> + <p><?php echo T_('Your browser does not provide a certificate.'); ?></p> +<?php } ?> diff --git a/data/templates/default/editprofile.tpl.php b/data/templates/default/editprofile.tpl.php new file mode 100644 index 0000000..25dc3a4 --- /dev/null +++ b/data/templates/default/editprofile.tpl.php @@ -0,0 +1,81 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<form action="<?php echo $formaction; ?>" method="post"> +<input type="hidden" name="token" value="<?php echo $token; ?>"/> + +<h3><?php echo T_('Account Details'); ?></h3> + +<table class="profile"> +<tr> + <th align="left"><?php echo T_('Username'); ?></th> + <td><?php echo $user; ?></td> + <td></td> +</tr> +<tr> + <th align="left"><?php echo T_('New Password'); ?></th> + <td><input type="password" name="pPass" size="20" /></td> + <td></td> +</tr> +<tr> + <th align="left"><?php echo T_('Confirm Password'); ?></th> + <td><input type="password" name="pPassConf" size="20" /></td> + <td></td> +</tr> +<tr> + <th align="left"><?php echo T_('E-mail'); ?></th> + <td><input type="text" name="pMail" size="75" value="<?php echo filter($objectUser->getEmail(), 'xml'); ?>" /></td> + <td>← <?php echo T_('Required'); ?></td> +</tr> +<tr> + <th align="left"><?php echo T_('Private RSS Feed'); ?></th> + <td><input type="checkbox" id="pEnablePrivateKey" name="pEnablePrivateKey" value="true" <?php echo $privateKeyIsEnabled;?> /> + <label for="pEnablePrivateKey"><?php echo T_('Enable'); ?></label> + <input type="text" id="pPrivateKey" name="pPrivateKey" size="40" value="<?php echo $privateKey;?>" readonly="readonly" /> + <a onclick="getNewPrivateKey(this); return false;"><button type="submit" name="submittedPK" value="1"><?php echo T_('Generate New Key'); ?></button></a> + </td> +</tr> +</table> + +<h3><?php echo T_('Personal Details'); ?></h3> + +<table class="profile"> +<tr> + <th align="left"><?php echo T_('Name'); ?></th> + <td><input type="text" name="pName" size="75" value="<?php echo filter($objectUser->getName(), 'xml'); ?>" /></td> +</tr> +<tr> + <th align="left"><?php echo T_('Homepage'); ?></th> + <td><input type="text" name="pPage" size="75" value="<?php echo filter($objectUser->getHomepage()); ?>" /></td> +</tr> +<tr> + <th align="left"><?php echo T_('Description'); ?></th> + <td><textarea name="pDesc" cols="75" rows="10"><?php echo $objectUser->getContent(); ?></textarea></td> +</tr> +<tr> + <th></th> + <td><input type="submit" name="submitted" value="<?php echo T_('Save Changes'); ?>" /></td> +</tr> +</table> + +<?php include 'editprofile-sslclientcerts.tpl.php'; ?> +<h3><?php echo T_('Actions'); ?></h3> +<table class="profile"> +<tr> + <th align="left"><?php echo T_('Export bookmarks'); ?></th> + <td> + <a href="../api/export_html.php"><?php echo T_('HTML file (for browsers)')?></a> / + <a href="../api/posts_all.php"><?php echo T_('XML file (like del.icio.us)')?></a> / + <a href="../api/export_csv.php"><?php echo T_('CSV file (for spreadsheet tools)')?></a> + </td> +</tr> +<tr><th> </th><td> </td></tr> +<tr><th> </th><td> </td></tr> +</table> + +</form> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/error.404.tpl.php b/data/templates/default/error.404.tpl.php new file mode 100644 index 0000000..fe9401d --- /dev/null +++ b/data/templates/default/error.404.tpl.php @@ -0,0 +1,9 @@ +<?php +header('HTTP/1.x 404 Not Found'); +$this->includeTemplate($GLOBALS['top_include']); +if (!$error) { + echo '<h1>'. T_('Not Found') .'</h1>'; + echo '<p>'. T_('The requested URL was not found on this server') .'</p>'; +} +$this->includeTemplate($GLOBALS['bottom_include']); +?>
\ No newline at end of file diff --git a/data/templates/default/error.500.tpl.php b/data/templates/default/error.500.tpl.php new file mode 100644 index 0000000..1d7f7ae --- /dev/null +++ b/data/templates/default/error.500.tpl.php @@ -0,0 +1,9 @@ +<?php +header('HTTP/1.x 500 Server error'); +$this->includeTemplate($GLOBALS['top_include']); +if (!$error) { + echo '<h1>'. T_('General server error') .'</h1>'; + echo '<p>'. T_('The requested URL could not be processed') .'</p>'; +} +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/importDelicious.tpl.php b/data/templates/default/importDelicious.tpl.php new file mode 100644 index 0000000..0f53cde --- /dev/null +++ b/data/templates/default/importDelicious.tpl.php @@ -0,0 +1,42 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<form id="import" enctype="multipart/form-data" action="<?php echo $formaction; ?>" method="post"> +<table> +<tr valign="top"> + <th align="left"><?php echo T_('File'); ?></th> + <td> + <input type="hidden" name="MAX_FILE_SIZE" value="1024000" /> + <input type="file" name="userfile" size="50" /> + </td> +</tr> +<tr valign="top"> + <th align="left"><?php echo T_('Privacy'); ?></th> + <td> + <select name="status"> + <option value="0"><?php echo T_('Public'); ?></option> + <option value="1"><?php echo T_('Shared with Watchlist'); ?></option> + <option value="2"><?php echo T_('Private'); ?></option> + </select> + </td> +</tr> +<tr> + <td /> + <td><input type="submit" value="<?php echo T_('Import'); ?>" /></td> +</tr> +</table> +</form> + +<h3><?php echo T_('Instructions'); ?></h3> +<ol> + <li><?php echo T_('Log in to the <a href="https://api.del.icio.us/v1/posts/all">export page at del.icio.us</a>'); ?>.</li> + <li><?php echo T_('Save the resulting <abbr title="Extensible Markup Language">XML</abbr> file to your computer'); ?>.</li> + <li><?php echo T_('Click <kbd>Browse...</kbd> to find this file on your computer. The maximum size the file can be is 1MB'); ?>.</li> + <li><?php echo T_('Select the default privacy setting for your imported bookmarks'); ?>.</li> + <li><?php echo T_('Click <kbd>Import</kbd> to start importing the bookmarks; it may take a minute'); ?>.</li> +</ol> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?>
\ No newline at end of file diff --git a/data/templates/default/importNetscape.tpl.php b/data/templates/default/importNetscape.tpl.php new file mode 100644 index 0000000..627a5af --- /dev/null +++ b/data/templates/default/importNetscape.tpl.php @@ -0,0 +1,50 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<div id="bookmarks"> + <form id="import" enctype="multipart/form-data" action="<?php echo $formaction; ?>" method="post"> + <table> + <tr valign="top"> + <th align="left"><?php echo T_('File'); ?></th> + <td> + <input type="hidden" name="MAX_FILE_SIZE" value="1024000" /> + <input type="file" name="userfile" size="50" /> + </td> + </tr> + <tr valign="top"> + <th align="left"><?php echo T_('Privacy'); ?></th> + <td> + <select name="status"> + <option value="0"><?php echo T_('Public'); ?></option> + <option value="1"><?php echo T_('Shared with Watchlist'); ?></option> + <option value="2"><?php echo T_('Private'); ?></option> + </select> + </td> + </tr> + <tr> + <td /> + <td><input type="submit" value="<?php echo T_('Import'); ?>" /></td> + </tr> + </table> + </form> + + <h3><?php echo T_('Instructions'); ?></h3> + <ol> + <li> + <p><?php echo T_('Export your bookmarks from your browser to a file'); ?>:</p> + <ul> + <li><?php echo T_('Internet Explorer: <kbd>File > Import and Export... > Export Favorites'); ?></kbd></li> + <li><?php echo T_('Mozilla Firefox: <kbd>Bookmarks > Manage Bookmarks... > File > Export...'); ?></kbd></li> + <li><?php echo T_('Netscape: <kbd>Bookmarks > Manage Bookmarks... > Tools > Export...'); ?></kbd></li> + </ul> + </li> + <li><?php echo T_('Click <kbd>Browse...</kbd> to find the saved bookmark file on your computer. The maximum size the file can be is 1MB'); ?>.</li> + <li><?php echo T_('Select the default privacy setting for your imported bookmarks'); ?>.</li> + <li><?php echo T_('Click <kbd>Import</kbd> to start importing the bookmarks; it may take a minute'); ?>.</li> + </ol> +</div> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?>
\ No newline at end of file diff --git a/data/templates/default/importStructure.tpl.php b/data/templates/default/importStructure.tpl.php new file mode 100644 index 0000000..9c54612 --- /dev/null +++ b/data/templates/default/importStructure.tpl.php @@ -0,0 +1,42 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<div id="bookmarks"> +<form id="import" enctype="multipart/form-data" + action="<?php echo $formaction; ?>" method="post"> +<table> + <tr valign="top"> + <th align="left"><?php echo T_('File'); ?></th> + <td><input type="hidden" name="MAX_FILE_SIZE" value="1024000" /> <input + type="file" name="userfile" size="50" /></td> + </tr> + <tr> + <td /> + <td><input type="submit" value="<?php echo T_('Import'); ?>" /></td> + </tr> +</table> +</form> + +<h3><?php echo T_('Instructions'); ?></h3> +<ol> + <li> + <p><?php echo T_('Create your structure into a simple text file and following this model:');?></p> + <ul> + <li>firstTagOfLevel1</li> + <li> firstTagOfLevel2 <i>(the line starts with two spaces)</i></li> + <li> secondTagOfLevel2</li> + <li> thirdTagOfLevel2</li> + <li>secondTagOfLevel1</li> + <li> fourthTagOfLevel2 <i>(included into secondTagOfLevel1)</i></li> + </ul> + </li> + <li> + <p><?php echo T_('Then import the file. The tags and their relations will be added to your profile.'); ?></p> + </li> +</ol> +</div> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?>
\ No newline at end of file diff --git a/data/templates/default/login.tpl.php b/data/templates/default/login.tpl.php new file mode 100644 index 0000000..e67808d --- /dev/null +++ b/data/templates/default/login.tpl.php @@ -0,0 +1,41 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<script type="text/javascript"> +window.onload = function() { + document.getElementById("username").focus(); +} +</script> + +<?php +if (!$userservice->isSessionStable()) { + echo '<p class="error">'.T_('Please activate cookies').'</p>'; +} +?> + +<form action="<?php echo $formaction; ?>" method="post"> + <div><input type="hidden" name="query" value="<?php echo $querystring; ?>" /></div> + <table> + <tr> + <th align="left"><label for="username"><?php echo T_('Username'); ?></label></th> + <td><input type="text" id="username" name="username" size="20" /></td> + <td></td> + </tr> + <tr> + <th align="left"><label for="password"><?php echo T_('Password'); ?></label></th> + <td><input type="password" id="password" name="password" size="20" /></td> + <td><input type="checkbox" name="keeppass" id="keeppass" value="yes" /> <label for="keeppass"><?php echo T_("Don't ask for my password for 2 weeks"); ?>.</label></td> + </tr> + <tr> + <td></td> + <td><input type="submit" name="submitted" value="<?php echo T_('Log In'); ?>" /></td> + <td></td> + </tr> + </table> + <p>» <a href="<?php echo ROOT ?>password.php"><?php echo T_('Forgotten your password?') ?></a></p> +</form> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?>
\ No newline at end of file diff --git a/data/templates/default/password.tpl.php b/data/templates/default/password.tpl.php new file mode 100644 index 0000000..55dbed6 --- /dev/null +++ b/data/templates/default/password.tpl.php @@ -0,0 +1,26 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<p><?php echo sprintf(T_('If you have forgotten your password, %s can generate a new one. Enter the username and e-mail address of your account into the form below and we will e-mail your new password to you.'), $GLOBALS['sitename']); ?></p> + +<form action="<?php echo $formaction; ?>" method="post"> + <table> + <tr> + <th align="left"><label for="username"><?php echo T_('Username'); ?></label></th> + <td><input type="text" id="username" name="username" size="20" class="required" /></td> + </tr> + <tr> + <th align="left"><label for="email"><?php echo T_('E-mail'); ?></label></th> + <td><input type="text" id="email" name="email" size="40" class="required" /></td> + </tr> + <tr> + <td></td> + <td><input type="submit" name="submitted" value="<?php echo T_('Generate Password'); ?>" /></td> + </tr> + </table> +</form> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?>
\ No newline at end of file diff --git a/data/templates/default/profile.tpl.php b/data/templates/default/profile.tpl.php new file mode 100644 index 0000000..1e2003a --- /dev/null +++ b/data/templates/default/profile.tpl.php @@ -0,0 +1,74 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<dl id="profile"> +<dt><?php echo T_('Username'); ?></dt> + <dd><?php echo $user; ?></dd> +<?php +if ($userservice->isLoggedOn() && $currentUser->isAdmin()) { +?> +<dt><?php echo T_('Email'); ?></dt> + <dd><?php echo filter($objectUser->getEmail()) ?></dd> +<?php +} +if ($objectUser->getName() != "") { +?> +<dt><?php echo T_('Name'); ?></dt> + <dd><?php echo filter($objectUser->getName()); ?></dd> +<?php +} +if ($objectUser->getHomepage() != "") { +?> +<dt><?php echo T_('Homepage'); ?></dt> + <dd><a href="<?php echo filter($objectUser->getHomepage()); ?>"><?php echo filter($objectUser->getHomepage()); ?></a></dd> +<?php +} +?> +<dt><?php echo T_('Member Since'); ?></dt> + <dd><?php echo date($GLOBALS['longdate'], strtotime($objectUser->getDatetime())); ?></dd> +<?php +if ($objectUser->getContent() != "") { +?> +<dt><?php echo T_('Description'); ?></dt> + <dd><?php echo $objectUser->getContent(); ?></dd> +<?php +} +$watching = $userservice->getWatchNames($userid); +if ($watching) { +?> + <dt><?php echo T_('Watching'); ?></dt> + <dd> + <?php + $list = ''; + foreach($watching as $watchuser) { + $list .= '<a href="'. createURL('bookmarks', $watchuser) .'">'. $watchuser .'</a>, '; + } + echo substr($list, 0, -2); + ?> + </dd> +<?php +} +$watchnames = $userservice->getWatchNames($userid, true); +if ($watchnames) { +?> + <dt><?php echo T_('Watched By'); ?></dt> + <dd> + <?php + $list = ''; + foreach($watchnames as $watchuser) { + $list .= '<a href="'. createURL('bookmarks', $watchuser) .'">'. $watchuser .'</a>, '; + } + echo substr($list, 0, -2); + ?> + </dd> +<?php +} +?> +<dt><?php echo T_('Bookmarks'); ?></dt> + <dd><a href="<?php echo createURL('bookmarks', $user) ?>"><?php echo T_('Go to bookmarks')?> >></a></dd> +</dl> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/register.tpl.php b/data/templates/default/register.tpl.php new file mode 100644 index 0000000..6cfddd7 --- /dev/null +++ b/data/templates/default/register.tpl.php @@ -0,0 +1,54 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<script type="text/javascript"> +window.onload = function() { + document.getElementById("username").focus(); +} +</script> + +<p><?php echo sprintf(T_('Sign up here to create a free %s account. All the information requested below is required'), $GLOBALS['sitename']); ?>.</p> + +<form action="<?php echo $formaction; ?>" method="post"> +<table> +<tr> + <th align="left"><label for="username"><?php echo T_('Username'); ?></label></th> + <td><input type="text" id="username" name="username" size="20" class="required" onkeyup="isAvailable(this, '')" /> </td> + <td id="availability"><?php echo '←'.T_(' at least 5 characters, alphanumeric (no spaces, no dots or other special ones)') ?></td> +</tr> +<tr> + <th align="left"><label for="password"><?php echo T_('Password'); ?></label></th> + <td><input type="password" id="password" name="password" size="20" class="required" /></td> + <td></td> +</tr> +<tr> + <th align="left"><label for="password2"><?php echo T_('Repeat Password'); ?></label></th> + <td><input type="password" id="password2" name="password2" size="20" class="required" /></td> + <td></td> +</tr> +<tr> + <th align="left"><label for="email"><?php echo T_('E-mail'); ?></label></th> + <td><input type="text" id="email" name="email" size="40" class="required" value="<?php echo htmlspecialchars(POST_MAIL); ?>" /></td> + <td><?php echo '←'.T_(' to send you your password if you forget it')?></td> +</tr> + +<?php if(strlen($antispamQuestion)>0) {?> +<tr> + <th align="left"><label for="antispamAnswer"><?php echo T_('Antispam question'); ?></label></th> + <td><input type="text" id="antispamAnswer" name="antispamAnswer" size="40" class="required" value="<?php echo $antispamQuestion; ?>" onfocus="if (this.value == '<?php echo $antispamQuestion; ?>') this.value = '';" onblur="if (this.value == '') this.value = '<?php echo $antispamQuestion; ?>';"/></td> + <td></td> +</tr> +<?php } ?> + +<tr> + <td></td> + <td><input type="submit" name="submitted" value="<?php echo T_('Register'); ?>" /></td> + <td></td> +</tr> +</table> +</form> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/rss.tpl.php b/data/templates/default/rss.tpl.php new file mode 100644 index 0000000..4aba277 --- /dev/null +++ b/data/templates/default/rss.tpl.php @@ -0,0 +1,30 @@ +<?php +echo '<' . '?xml version="1.0" encoding="utf-8" ?' . ">\n"; +?> +<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:atom="http://www.w3.org/2005/Atom" +> +<channel> + <title><?php echo $feedtitle; ?></title> + <link><?php echo htmlspecialchars($pagelink); ?></link> + <atom:link rel="self" type="application/rss+xml" href="<?php echo htmlspecialchars($feedlink); ?>"/> + <description><?php echo htmlspecialchars($feeddescription); ?></description> + <pubDate><?php echo date('r'); ?></pubDate> + <lastBuildDate><?php echo $feedlastupdate ?></lastBuildDate> + <ttl>60</ttl> + +<?php foreach($bookmarks as $bookmark): ?> + <item> + <title><?php echo htmlspecialchars($bookmark['title']); ?></title> + <link><?php echo htmlspecialchars($bookmark['link']); ?></link> + <guid><?php echo $bookmark['guid']; ?></guid> + <description><?php echo htmlspecialchars($bookmark['description']); ?></description> + <dc:creator><?php echo htmlspecialchars($bookmark['creator']); ?></dc:creator> + <pubDate><?php echo $bookmark['pubdate']; ?></pubDate> +<?php foreach($bookmark['tags'] as $tag): ?> + <category><?php echo htmlspecialchars($tag); ?></category> +<?php endforeach; ?> + </item> +<?php endforeach; ?> +</channel> +</rss> diff --git a/data/templates/default/search.menu.php b/data/templates/default/search.menu.php new file mode 100644 index 0000000..5a8f027 --- /dev/null +++ b/data/templates/default/search.menu.php @@ -0,0 +1,57 @@ +<?php + + +/* Managing all possible inputs */ +$select_watchlist = isset($select_watchlist) ? $select_watchlist : ''; +$select_all = isset($select_all) ? $select_all : ''; + +$selected = ' selected="selected"'; +if (!isset($range)) { + $range = ''; +} +?> + + +<form id="search" action="<?php echo createURL('search'); ?>" method="post"> + <table> + <tr> + <?php + $currentUser = $currentUsername = null; + if ($userservice->isLoggedOn()) { + $currentUser = $userservice->getCurrentObjectUser(); + $currentUsername = $currentUser->getUsername(); + } + if ($userservice->isLoggedOn() || isset($user)) { + ?> + + <td><input type="text" name="terms" size="30" value="<?php $terms=!isset($terms)?T_('Search...'):$terms; echo filter($terms); ?>" onfocus="if (this.value == '<?php echo T_('Search...') ?>') this.value = '';" onblur="if (this.value == '') this.value = '<?php echo T_('Search...') ?>';"/></td> + <td><?php echo T_('in') ?></td> + <td> + <select name="range"> + <?php + if ($range == 'user' && $user!=$currentUsername) { + ?> + <option value="<?php echo $user ?>"><?php echo T_("this user's bookmarks"); ?></option> + <?php + } + if ($userservice->isLoggedOn()) { + ?> + <option value="<?php echo $currentUsername; ?>"><?php echo T_('my bookmarks'); ?></option> + <option value="watchlist" <?php echo ($range == 'watchlist')?$selected:''?> ><?php echo T_('my watchlist'); ?></option> + <?php + } + ?> + <option value="all" <?php echo ($range == 'all' || $range == '')?$selected:'' ?> ><?php echo T_('all bookmarks'); ?></option> + </select> + </td> + <?php + } else { + ?> + <td><input type="hidden" name="range" value="all" /></td> + <?php + } + ?> + <td><input type="submit" value="<?php echo T_('Search' /* Submit button */); ?>" /></td> + </tr> + </table> +</form> diff --git a/data/templates/default/sidebar.block.common.php b/data/templates/default/sidebar.block.common.php new file mode 100644 index 0000000..dfc83ef --- /dev/null +++ b/data/templates/default/sidebar.block.common.php @@ -0,0 +1,28 @@ +<?php +$b2tservice =SemanticScuttle_Service_Factory::get('Bookmark2Tag'); +$commonTags = $b2tservice->getRelatedTagsByHash($hash); +$commonTags = $b2tservice->tagCloud($commonTags, 5, 90, 225, 'alphabet_asc'); + +if ($commonTags && count($commonTags) > 0) { + ?> + +<h2><?php echo T_('Popular Tags'); ?></h2> +<div id="common"> +<p class="tags"><?php +$contents = ''; + +if(strlen($user)==0) { + $cat_url = createURL('tags', '%2$s'); +} + +foreach ($commonTags as $row) { + $entries = T_ngettext('bookmark', 'bookmarks', $row['bCount']); + $contents .= '<a href="'. sprintf($cat_url, $user, filter($row['tag'], 'url')) .'" title="'. $row['bCount'] .' '. $entries .'" rel="tag" style="font-size:'. $row['size'] .'">'. filter($row['tag']) .'</a> '; +} +echo $contents ."\n"; +?></p> +</div> + +<?php +} +?> diff --git a/data/templates/default/sidebar.block.linked.php b/data/templates/default/sidebar.block.linked.php new file mode 100644 index 0000000..d3a25a5 --- /dev/null +++ b/data/templates/default/sidebar.block.linked.php @@ -0,0 +1,66 @@ +<?php +/* + * Used in: + * - populartags.php + * - bookmarks.php + * - alltags.php + * - tags.php + */ +/* Service creation: only useful services are created */ +$tag2tagservice =SemanticScuttle_Service_Factory::get('Tag2Tag'); + +require_once('sidebar.linkedtags.inc.php'); + +/* Manage input */ +$user = isset($user)?$user:''; +$userid = isset($userid)?$userid:0; +$currenttag = isset($currenttag) ? str_replace('+', ',', $currenttag) : ''; +//$summarizeLinkedTags = isset($summarizeLinkedTags)?$summarizeLinkedTags:false; + +$logged_on_userid = $userservice->getCurrentUserId(); +$editingMode = $logged_on_userid !== false; +?> +<h2><?php echo T_('Linked Tags'); ?></h2> +<div id="related"> +<?php +if ($editingMode) { + echo '<p style="margin-bottom: 13px;text-align:center;">'; + echo ' (<a href="'. createURL('tag2tagadd','') .'" rel="tag">'.T_('Add new link').'</a>) '; + echo ' (<a href="'. createURL('tag2tagdelete','') .'" rel="tag">'.T_('Delete link').'</a>)'; + echo '</p>'; +} +?> + <div id="related-content"></div> + <script type="text/javascript">//<![CDATA[ +jQuery("#related-content") +.jstree({ + "themes" : { + "theme": "default", + "dots": false, + "icons": true, + "url": '<?php echo ROOT_JS ?>themes/default/style.css' + }, + "json_data" : { + "ajax" : { + "url": function(node) { + //-1 is root + parentparam = ""; + if (node == -1 ) { + node = <?php echo json_encode($currenttag); ?>; + parentparam = "&parent=true"; + } else if (node.attr('rel')) { + node = node.attr('rel'); + } else { + return; + } + + return "<?php echo ROOT ?>ajax/getlinkedtags.php?tag=" + node + + parentparam; + } + } + }, + plugins : [ "themes", "json_data"] +}); +//]]> + </script> +</div>
\ No newline at end of file diff --git a/data/templates/default/sidebar.block.menu.php b/data/templates/default/sidebar.block.menu.php new file mode 100644 index 0000000..94a9fa2 --- /dev/null +++ b/data/templates/default/sidebar.block.menu.php @@ -0,0 +1,80 @@ +<?php +/* Service creation: only useful services are created */ +$tag2tagservice =SemanticScuttle_Service_Factory::get('Tag2Tag'); + + +require_once('sidebar.linkedtags.inc.php'); + +/* Manage input */ +$userid = isset($userid)?$userid:0; +$user = isset($user)?$user:null; + + +$logged_on_userid = $userservice->getCurrentUserId(); +if ($logged_on_userid === false) { + $logged_on_userid = NULL; +} + +// editing mode +if(($logged_on_userid != null) && ($userid === $logged_on_userid)) { + $editingMode = true; +} else { + $editingMode = false; +} + +if(!isset($user) || $user == '') { + $cat_url = createURL('tags', '%2$s'); +} + +$menuTags = $tag2tagservice->getMenuTags($userid); +if (sizeof($menuTags) > 0 || ($userid != 0 && $userid === $logged_on_userid)) { +?> + +<h2> +<?php + echo '<span title="'.sprintf(T_('Tags included into the tag \'%s\''), $GLOBALS['menuTag']).'">'.T_('Menu Tags').'</span> '; + //} +?> +</h2> + + +<div id="related"> +<table> +<?php + if($editingMode) { + echo '<tr><td></td><td>'; + echo ' (<a href="'. createURL('tag2tagadd','menu') .'" rel="tag">'.T_('Add new link').'</a>) '; + echo ' (<a href="'. createURL('tag2tagdelete','menu') .'" rel="tag">'.T_('Delete link').'</a>)'; + echo '</td></tr>'; + } + + $stopList = array(); + foreach($menuTags as $menuTag) { + $tag = $menuTag['tag']; + if(!in_array($tag, $stopList)) { + $displayLinkedTags = displayLinkedTags($tag, '>', $userid, $cat_url, $user, $editingMode, null, 1); + echo $displayLinkedTags['output']; + if(is_array($displayLinkedTags['stopList'])) { + $stopList = array_merge($stopList, $displayLinkedTags['stopList']); + } + } + } +?> +</table> + +<?php $cUser = $userservice->getUser($userid); ?> +<?php if($userid>0): ?> +<?php if($userid==$logged_on_userid): ?> +<p style="text-align:right"><a href="<?php echo createURL('alltags', $cUser['username']); ?>" title="<?php echo T_('See all your tags')?>"><?php echo T_('all your tags'); ?></a> →</p> +<?php else: ?> +<p style="text-align:right"><a href="<?php echo createURL('alltags', $cUser['username']); ?>" title="<?php echo T_('See all tags from this user')?>"><?php echo T_('all tags from this user'); ?></a> →</p> +<?php endif; ?> + +<?php else : ?> +<p style="text-align:right"><a href="<?php echo createURL('populartags', $cUser['username']); ?>" title="<?php echo T_('See popular tags')?>"><?php echo T_('Popular Tags'); ?></a> →</p> +<?php endif; ?> +</div> + +<?php +} +?> diff --git a/data/templates/default/sidebar.block.menu2.php b/data/templates/default/sidebar.block.menu2.php new file mode 100644 index 0000000..1c177a5 --- /dev/null +++ b/data/templates/default/sidebar.block.menu2.php @@ -0,0 +1,71 @@ +<?php +require_once('sidebar.linkedtags.inc.php'); + +/* Manage input */ +$userid = isset($userid)?$userid:0; +$user = isset($user)?$user:null; + + +$logged_on_userid = $userservice->getCurrentUserId(); +if ($logged_on_userid === false) { + $logged_on_userid = NULL; +} + + +$cat_url = createURL('tags', '%s'); +$menu2Tags = $GLOBALS['menu2Tags']; + +if (count($menu2Tags) > 0) { +?> + +<h2><?php echo T_('Featured Menu Tags');?></h2> + + +<div id="maintagsmenu" +<?php echo 'title="'.T_('This menu is composed of keywords (tags) organized by admins.').'"'?>> + <ul> +<?php +//this is unneeded and replaced by the ajax tree anyway. we keep it for +// non-js browsers +foreach ($menu2Tags as $menu2Tag) { + echo ' <li>' + . sprintf( + '<a href="%s">%s</a>', + sprintf($cat_url, $menu2Tag), + $menu2Tag + ) + . '</li>' . "\n"; +} +?> + </ul> +</div> +<script type="text/javascript"> +jQuery("#maintagsmenu") +.jstree({ + "themes" : { + "theme": "default", + "dots": false, + "icons": true, + "url": '<?php echo ROOT_JS ?>themes/default/style.css' + }, + "json_data" : { + "ajax" : { + "url": function(node) { + //-1 is root + if (node == -1 ) { + node = ""; + } else if (node.attr('rel')) { + node = node.attr('rel'); + } else { + return; + } + return "<?php echo ROOT ?>ajax/getadminlinkedtags.php?tag=" + node; + } + } + }, + plugins : [ "themes", "json_data"] +}); +</script> +<?php +} +?> diff --git a/data/templates/default/sidebar.block.popular.php b/data/templates/default/sidebar.block.popular.php new file mode 100644 index 0000000..842aa60 --- /dev/null +++ b/data/templates/default/sidebar.block.popular.php @@ -0,0 +1,44 @@ +<?php +/* Service creation: only useful services are created */ +$b2tservice =SemanticScuttle_Service_Factory::get('Bookmark2Tag'); + + +if(!isset($user)) { + $user = ''; +} +if(!isset($userid)) { + $userid = NULL; +} + +$logged_on_userid = $userservice->getCurrentUserId(); +if ($logged_on_userid === false) { + $logged_on_userid = NULL; +} +$popularTags = $b2tservice->getPopularTags($userid, $popCount, $logged_on_userid); +$popularTags = $b2tservice->tagCloud($popularTags, 5, 90, 225, 'alphabet_asc'); + +if ($popularTags && count($popularTags) > 0) { +?> + +<h2><?php echo T_('Popular Tags'); ?></h2> +<div id="popular"> + <p class="tags"> + <?php + $contents = ''; + + if(strlen($user)==0) { + $cat_url = createURL('tags', '%2$s'); + } + + foreach ($popularTags as $row) { + $entries = T_ngettext('bookmark', 'bookmarks', $row['bCount']); + $contents .= '<a href="'. sprintf($cat_url, $user, filter($row['tag'], 'url')) .'" title="'. $row['bCount'] .' '. $entries .'" rel="tag" style="font-size:'. $row['size'] .'">'. filter($row['tag']) .'</a> '; + } + echo $contents ."\n"; + ?> + </p> +</div> + +<?php +} +?> diff --git a/data/templates/default/sidebar.block.recent.php b/data/templates/default/sidebar.block.recent.php new file mode 100644 index 0000000..80ae71c --- /dev/null +++ b/data/templates/default/sidebar.block.recent.php @@ -0,0 +1,39 @@ +<?php +/* Service creation: only useful services are created */ +$b2tservice =SemanticScuttle_Service_Factory::get('Bookmark2Tag'); + +/* Manage input */ +$userid = isset($userid)?$userid:NULL; + +$logged_on_userid = $userservice->getCurrentUserId(); +if ($logged_on_userid === false) { + $logged_on_userid = NULL; +} +$recentTags = $b2tservice->getPopularTags($userid, $popCount, $logged_on_userid, $GLOBALS['defaultRecentDays']); +$recentTags = $b2tservice->tagCloud($recentTags, 5, 90, 225, 'alphabet_asc'); + +if ($recentTags && count($recentTags) > 0) { +?> + +<h2><?php echo T_('Recent Tags'); ?></h2> +<div id="recent"> + <?php + $contents = '<p class="tags">'; + + if(!isset($user) || $user == '') { + $user = ''; + $cat_url = createURL('tags', '%2$s'); + } + + foreach ($recentTags as $row) { + $entries = T_ngettext('bookmark', 'bookmarks', $row['bCount']); + $contents .= '<a href="'. sprintf($cat_url, $user, filter($row['tag'], 'url')) .'" title="'. $row['bCount'] .' '. $entries .'" rel="tag" style="font-size:'. $row['size'] .'">'. filter($row['tag']) .'</a> '; + } + echo $contents ."</p>\n"; + ?> + <p style="text-align:right"><a href="<?php echo createURL('populartags'); ?>"><?php echo T_('Popular Tags'); ?></a> →</p> +</div> + +<?php +} +?> diff --git a/data/templates/default/sidebar.block.related.php b/data/templates/default/sidebar.block.related.php new file mode 100644 index 0000000..60ee486 --- /dev/null +++ b/data/templates/default/sidebar.block.related.php @@ -0,0 +1,40 @@ +<?php +/* Service creation: only useful services are created */ +$b2tservice =SemanticScuttle_Service_Factory::get('Bookmark2Tag'); + + +if(!isset($user)) $user=""; + + +$logged_on_userid = $userservice->getCurrentUserId(); +if ($logged_on_userid === false) { + $logged_on_userid = NULL; +} + +if(!isset($userid)) { + $userid = NULL; +} + +if(isset($user) && strlen($user)==0) { + $cat_url = createURL('tags', '%2$s'); +} +if ($currenttag) { + $relatedTags = $b2tservice->getRelatedTags($currenttag, $userid, $logged_on_userid); + if (sizeof($relatedTags) > 0) { +?> + +<h2><?php echo T_('Related Tags'); ?></h2> +<div id="related"> + <table> + <?php foreach($relatedTags as $row): ?> + <tr> + <td><a href="<?php echo sprintf($cat_url, filter($user, 'url'), filter($row['tag'], 'url')); ?>" rel="tag"><?php echo filter($row['tag']); ?></a> <a href="<?php echo sprintf($cat_url, filter($user, 'url'), filter($currenttag, 'url') .'+'. filter($row['tag'], 'url')); ?>" title="<?php echo $currenttag . '+' . filter($row['tag']); ?>" class="crossTags">+</a></td> + </tr> + <?php endforeach; ?> + </table> +</div> + +<?php + } +} +?> diff --git a/data/templates/default/sidebar.block.search.php b/data/templates/default/sidebar.block.search.php new file mode 100644 index 0000000..d3cd8a5 --- /dev/null +++ b/data/templates/default/sidebar.block.search.php @@ -0,0 +1,51 @@ +<?php +/** + * Show a list of the last searches. + * + * SemanticScuttle - your social bookmark manager. + * + * PHP version 5. + * + * @category Bookmarking + * @package SemanticScuttle + * @subcategory Templates + * @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net> + * @author Christian Weiske <cweiske@cweiske.de> + * @author Eric Dane <ericdane@users.sourceforge.net> + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ +/* Service creation: only useful services are created */ +$searchhistoryservice = SemanticScuttle_Service_Factory::get('SearchHistory'); + +$lastSearches = $searchhistoryservice->getAllSearches( + 'all', NULL, 3, NULL, true, false +); + +if ($lastSearches && count($lastSearches) > 0) { +?> + +<h2><?php echo T_('Last Searches'); ?></h2> +<div id="searches"> + <table> +<?php +foreach ($lastSearches as $row) { + echo ' <tr><td>'; + echo '<a href="' + . htmlspecialchars(createURL('search', $range.'/'.$row['shTerms'])) + . '">'; + echo htmlspecialchars($row['shTerms']); + echo '</a>'; + echo ' <span title="' + . T_('Number of bookmarks for this query') + . '">(' . $row['shNbResults'] . ')</span>'; + echo '</td></tr>' . "\n"; +} +//echo '<tr><td><a href="'.createURL('users').'">...</a></td></tr>'; +?> + + </table> +</div> +<?php +} +?> diff --git a/data/templates/default/sidebar.block.tagactions.php b/data/templates/default/sidebar.block.tagactions.php new file mode 100644 index 0000000..3351866 --- /dev/null +++ b/data/templates/default/sidebar.block.tagactions.php @@ -0,0 +1,35 @@ +<?php +/* Service creation: only useful services are created */ +//No specific services + +if ($userservice->isLoggedOn()) { + + if ($currentUser->getUsername() == $user) { + $tags = explode('+', $currenttag); + $renametext = T_ngettext('Rename Tag', 'Rename Tags', count($tags)); + $renamelink = createURL('tagrename', $currenttag); + $deletelink = createURL('tagdelete', $currenttag); + $tagdesclink = createURL('tagedit', $currenttag); + $commondesclink = createURL('tagcommondescriptionedit', $currenttag); + $addtag2taglinklink = createURL('tag2tagadd', $currenttag); +?> + +<h2><?php echo T_('Actions'); ?></h2> +<div id="tagactions"> + <ul> + <li><a href="<?php echo $renamelink; ?>"><?php echo $renametext ?></a></li> + <?php if (count($tags) == 1): ?> + <li><a href="<?php echo $deletelink; ?>"><?php echo T_('Delete Tag') ?></a></li> + <?php endif; ?> + <li><a href="<?php echo $tagdesclink; ?>"><?php echo T_('Edit Tag Description') ?></a></li> + <?php if ($GLOBALS['enableCommonTagDescription'] && ($GLOBALS['enableCommonTagDescriptionEditedByAll'] || $currentUser->isAdmin() )): ?> + <li><a href="<?php echo $commondesclink; ?>"><?php echo T_('Edit Tag Common Description') ?></a></li> + <?php endif; ?> + <li><a href="<?php echo $addtag2taglinklink; ?>"><?php echo T_('Create a link to another tag') ?></a></li> + </ul> +</div> + +<?php + } +} +?> diff --git a/data/templates/default/sidebar.block.users.php b/data/templates/default/sidebar.block.users.php new file mode 100644 index 0000000..58fdfb7 --- /dev/null +++ b/data/templates/default/sidebar.block.users.php @@ -0,0 +1,34 @@ +<?php +/* Service creation: only useful services are created */ +//No specific services + +$logged_on_userid = $userservice->getCurrentUserId(); +if ($logged_on_userid === false) { + $logged_on_userid = NULL; +} +$lastUsers = $userservice->getUsers(3); + +if ($lastUsers && count($lastUsers) > 0) { +?> + +<h2><?php echo T_('New Users'); ?></h2> +<div id="users"> +<table> +<?php +foreach ($lastUsers as $row) { + echo '<tr><td>'; + echo '<a href="'.createURL('profile', $row['username']).'">'; + echo SemanticScuttle_Model_UserArray::getName($row); + echo '</a>'; + echo ' (<a href="'.createURL('bookmarks', $row['username']).'">'.T_('bookmarks').'</a>)'; + echo '</td></tr>'; +} +//echo '<tr><td><a href="'.createURL('users').'">...</a></td></tr>'; +?> + +</table> +<p style="text-align:right"><a href="<?php echo createURL('users'); ?>" title="<?php echo T_('See all users')?>"><?php echo T_('All users'); ?></a> →</p> +</div> +<?php +} +?> diff --git a/data/templates/default/sidebar.block.watchlist.php b/data/templates/default/sidebar.block.watchlist.php new file mode 100644 index 0000000..3af9c5a --- /dev/null +++ b/data/templates/default/sidebar.block.watchlist.php @@ -0,0 +1,60 @@ +<?php +/* Service creation: only useful services are created */ +//No specific services + +$watching = $userservice->getWatchNames($userid); +$watchedBy = $userservice->getWatchNames($userid, true); + + +$closeContacts = array(); // people in my contacts list and who I am also in the contacts list +foreach($watching as $watchuser) { + if(in_array($watchuser, $watchedBy)) { + $closeContacts[] = $watchuser; + } +} + +?> + +<?php if(count($closeContacts)>0):?> +<h2 title="<?php echo T_('Close contacts are mutual contacts');?>"><?php echo ' ↔ '. T_('Close contacts'); ?></h2> +<div id="watching"> + <ul> + <?php foreach($closeContacts as $watchuser): ?> + <li><a href="<?php echo createURL('bookmarks', $watchuser); ?>"><?php echo $watchuser; ?></a> </li> + <?php endforeach; ?> + </ul> +</div> +<?php endif; ?> + + +<h2><?php echo ' → '. T_('Watching'); ?></h2> +<div id="watching"> + <ul> + <?php if($userservice->isLoggedOn() && $currentUser->getUsername() == $user): ?> + <li> + <form action="<?php echo createURL('watch', '');?>" method="post"> + <input type="text" name="contact" value="<?php echo T_('Add a contact...');?>" onfocus="if (this.value == '<?php echo T_('Add a contact...');?>') this.value = '';" onblur="if (this.value == '') this.value = '<?php echo T_('Add a contact...');?>';" title="<?php echo T_('Type a username to add it to your contacts.') ?>" /> + </form> + </li> + <?php endif; ?> + + <?php foreach($watching as $watchuser): ?> + <li><a href="<?php echo createURL('bookmarks', $watchuser); ?>"><?php echo $watchuser; ?></a> + <?php if($userservice->isLoggedOn() && $currentUser->getUsername() == $user): ?> + - <a href="<?php echo createUrl('watch','?contact='.$watchuser); ?>" title="<?php echo T_('Remove this contact'); ?>">x</a> + </li> + <?php endif; ?> + <?php endforeach; ?> + + </ul> +</div> + +<h2><?php echo ' ← '. T_('Watched By'); ?></h2> +<div id="watching"> + <ul> + <?php foreach($watchedBy as $watchuser): ?> + <li><a href="<?php echo createURL('bookmarks', $watchuser); ?>"><?php echo $watchuser; ?></a> </li> + <?php endforeach; ?> + </ul> + +</div> diff --git a/data/templates/default/sidebar.block.watchstatus.php b/data/templates/default/sidebar.block.watchstatus.php new file mode 100644 index 0000000..99574aa --- /dev/null +++ b/data/templates/default/sidebar.block.watchstatus.php @@ -0,0 +1,28 @@ +<?php +/* Service creation: only useful services are created */ +//No specific services + + +if ($userservice->isLoggedOn()) { + + if ($currentUser->getUsername() != $user) { + $result = $userservice->getWatchStatus($userid, $userservice->getCurrentUserId()); + if ($result) { + $linkText = T_('Remove from Watchlist'); + } else { + $linkText = T_('Add to Watchlist'); + } + $linkAddress = createURL('watch', $user); +?> + +<h2><?php echo T_('Actions'); ?></h2> +<div id="watchlist"> + <ul> + <li><a href="<?php echo $linkAddress ?>"><?php echo $linkText ?></a></li> + </ul> +</div> + +<?php + } +} +?>
\ No newline at end of file diff --git a/data/templates/default/sidebar.linkedtags.inc.php b/data/templates/default/sidebar.linkedtags.inc.php new file mode 100644 index 0000000..020d0f0 --- /dev/null +++ b/data/templates/default/sidebar.linkedtags.inc.php @@ -0,0 +1,84 @@ +<?php +/* +To be inserted into blocks where structured tags must be displayed in a tree format. +*/ + +function displayLinkedTags($tag, $linkType, $uId, $cat_url, $user, $editingMode =false, $precedentTag =null, $level=0, $stopList=array()) { + + if(in_array($tag, $stopList)) { + return array('output' => '', 'stoplist' => $stopList); + } + + $tag2tagservice =SemanticScuttle_Service_Factory::get('Tag2Tag'); + $tagstatservice =SemanticScuttle_Service_Factory::get('TagStat'); + + // link '>' + if($level>1) { + if($editingMode) { + $link = '<small><a href="'.createURL('tag2tagedit', $precedentTag.'/'.$tag).'" title="'._('Edit link').'">></a> </small>'; + } else { + $link = '> '; + } + } else { + $link = ''; + } + + $output = ''; + $output.= '<tr>'; + $output.= '<td></td>'; + $output.= '<td>'; + $output.= $level == 1?'<b>':''; + $output.= str_repeat(' ', $level*2) .$link.'<a href="'. sprintf($cat_url, filter($user, 'url'), filter($tag, 'url')) .'" rel="tag">'. filter($tag) .'</a>'; + $output.= $level == 1?'</b>':''; + //$output.= ' - '. $tagstatservice->getMaxDepth($tag, $linkType, $uId); + + $synonymTags = $tag2tagservice->getAllLinkedTags($tag, '=', $uId); + $synonymTags = is_array($synonymTags)?$synonymTags:array($synonymTags); + sort($synonymTags); + $synonymList = ''; + foreach($synonymTags as $synonymTag) { + //$output.= ", ".$synonymTag; + $synonymList.= $synonymTag.' '; + } + if(count($synonymTags)>0) { + $output.= ', '.$synonymTags[0]; + } + if(count($synonymTags)>1) { + $output.= '<span title="'.T_('Synonyms:').' '.$synonymList.'">, etc</span>'; + } + + /*if($editingMode) { + $output.= ' ('; + $output.= '<a href="'.createURL('tag2tagadd', $tag).'" title="'._('Add a subtag').'">+</a>'; + if(1) { + $output.= ' - '; + $output.= '<a href="'.createURL('tag2tagdelete', $tag).'">-</a>'; + } + $output.= ')'; + }*/ + $output.= '</td>'; + $output.= '</tr>'; + + $tags = array($tag); + $tags = array_merge($tags, $synonymTags); + foreach($tags as $tag) { + + if(!in_array($tag, $stopList)) { + $linkedTags = $tag2tagservice->getLinkedTags($tag, '>', $uId); + $precedentTag = $tag; + $stopList[] = $tag; + foreach($linkedTags as $linkedTag) { + $displayLinkedTags = displayLinkedTags($linkedTag, $linkType, $uId, $cat_url, $user, $editingMode, $precedentTag, $level + 1, $stopList); + $output.= $displayLinkedTags['output']; + } + if(isset($displayLinkedTags) && is_array($displayLinkedTags['stopList'])) { + $stopList = array_merge($stopList, $displayLinkedTags['stopList']); + $stopList = array_unique($stopList); + } + } + + } + return array('output' => $output, 'stopList' => $stopList); +} + +?> diff --git a/data/templates/default/sidebar.tpl.php b/data/templates/default/sidebar.tpl.php new file mode 100644 index 0000000..b4fac96 --- /dev/null +++ b/data/templates/default/sidebar.tpl.php @@ -0,0 +1,23 @@ +<?php if ($GLOBALS['enableAdminColors'] != false + && isset($userid) && $userservice->isAdmin($userid) +): ?> +<div id="sidebar" class="adminBackground"> +<?php else: ?> +<div id="sidebar"> +<?php endif ?> + + +<?php +echo $GLOBALS['sidebarTopMessage'].' '; + +if (isset($sidebar_blocks) && count($sidebar_blocks)) { + $size = count($sidebar_blocks); + for ($i = 0; $i < $size; $i++) { + $this->includeTemplate('sidebar.block.'. $sidebar_blocks[$i]); + } +} + +echo $GLOBALS['sidebarBottomMessage']; +?> + +</div> diff --git a/data/templates/default/tag2tagadd.tpl.php b/data/templates/default/tag2tagadd.tpl.php new file mode 100644 index 0000000..9482007 --- /dev/null +++ b/data/templates/default/tag2tagadd.tpl.php @@ -0,0 +1,57 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<form action="<?php echo $formaction; ?>" method="post"> + +<p align="right" style="float:right"> +<small style="text-align:right"><?php echo T_('Note: use "=" to make synonym two tags. e.g.: france=frenchcountry')?></small><br/> +<small style="text-align:right"><?php echo T_('Note: use ">" to include one tag in another. e.g.: europe>france>paris')?></small><br/> +</p> + +<p><?php echo T_('Create new link:')?></p> +<p> +<input type="text" name="tag1" value="<?php echo $tag1 ?>"/> +<input type="text" name="linkType" value=">" size="1" maxlength="1"/> +<input type="text" name="tag2" /> +</p> +<p> +<small style="text-align:right"><?php echo sprintf(T_('Note: include a tag into \'%s\' tag (e.g. %s>countries) display the tag into the menu box'), $GLOBALS['menuTag'], $GLOBALS['menuTag'])?></small> +</p> +<!--p><?php echo T_('Are you sure?'); ?></p--> +<p> + <input type="submit" name="confirm" value="<?php echo T_('Create'); ?>" /> + <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" /> +</p> + +<?php if (isset($referrer)): ?> +<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div> +<?php endif; ?> + +</form> + +<?php +if(count($links)>0) { +echo T_("Existing links:"); +foreach($links as $link) { + echo '<span style="white-space:nowrap;margin-left:25px;">'; + if($link['tag1'] == $tag1 || $link['tag1'] == $tag2) { + $textTag1 = '<b>'.$tag1.'</b>'; + } else { + $textTag1 = $link['tag1']; + } + if($link['tag2'] == $tag1 || $link['tag2'] == $tag2) { + $textTag2 = '<b>'.$tag2.'</b>'; + } else { + $textTag2 = $link['tag2']; + } + + echo $textTag1.' '.$link['relationType'].' '.$textTag2; + echo "</span> "; +} +} else { + echo T_('No links'); +} + +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/tag2tagdelete.tpl.php b/data/templates/default/tag2tagdelete.tpl.php new file mode 100644 index 0000000..8018374 --- /dev/null +++ b/data/templates/default/tag2tagdelete.tpl.php @@ -0,0 +1,49 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<form action="<?php echo $formaction; ?>" method="post"> +<!--input type="hidden" name="tag1" value="<?php echo $tag1 ?>" /> +<input type="hidden" name="tag2" value="<?php echo $tag2 ?>" /--> +<p> +<input type="text" name="tag1" value="<?php echo $tag1 ?>"/> +<input type="text" name="linkType" value=">" size="1" maxlength="1"/> +<input type="text" name="tag2" value="<?php echo $tag2 ?>"/> +</p> +<p><?php echo T_('Are you sure?'); ?></p> +<p> + <input type="submit" name="confirm" value="<?php echo T_('Yes'); ?>" /> + <input type="submit" name="cancel" value="<?php echo T_('No'); ?>" /> +</p> + +<?php if (isset($referrer)): ?> +<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div> +<?php endif; ?> + +</form> + +<?php +if(count($links)>0) { +echo T_("Existing links:"); +foreach($links as $link) { + echo '<span style="white-space:nowrap;margin-left:25px;">'; + if($link['tag1'] == $tag1 || $link['tag1'] == $tag2) { + $textTag1 = '<b>'.$tag1.'</b>'; + } else { + $textTag1 = $link['tag1']; + } + if($link['tag2'] == $tag1 || $link['tag2'] == $tag2) { + $textTag2 = '<b>'.$tag2.'</b>'; + } else { + $textTag2 = $link['tag2']; + } + + echo $textTag1.' '.$link['relationType'].' '.$textTag2; + echo "</span> "; +} +} else { + echo T_('No links'); +} + +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/tag2tagedit.tpl.php b/data/templates/default/tag2tagedit.tpl.php new file mode 100644 index 0000000..4745ad2 --- /dev/null +++ b/data/templates/default/tag2tagedit.tpl.php @@ -0,0 +1,73 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<form action="<?php echo $formdeleteaction; ?>" method="post"> +<p><?php echo T_('Delete the link')?></p> +<!--input type="hidden" name="tag1" value="<?php echo $tag1 ?>" /> +<input type="hidden" name="tag2" value="<?php echo $tag2 ?>" /--> +<p> +<input type="text" name="tag1" value="<?php echo $tag1 ?>"/> +<input type="text" name="linkType" value=">" size="1" maxlength="1"/> +<input type="text" name="tag2" value="<?php echo $tag2 ?>"/> +</p> +<p><?php echo T_('Are you sure?'); ?></p> +<p> + <input type="submit" name="confirm" value="<?php echo T_('Yes'); ?>" /> + <input type="submit" name="cancel" value="<?php echo T_('No'); ?>" /> +</p> + +<?php if (isset($referrer)): ?> +<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div> +<?php endif; ?> + +</form> + +<hr /> + +<form action="<?php echo $formaddaction; ?>" method="post"> +<p><?php echo T_('Create new link')?></p> +<p> +<input type="text" name="tag1" value="<?php echo $tag1 ?>"/> +<input type="text" name="linkType" value=">" size="1" maxlength="1"/> +<input type="text" name="tag2" /> +</p> +<!--p><?php echo T_('Are you sure?'); ?></p--> +<p> + <input type="submit" name="confirm" value="<?php echo T_('Create'); ?>" /> + <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" /> +</p> + +<?php if (isset($referrer)): ?> +<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div> +<?php endif; ?> + +</form> + +<hr /> + +<?php +if(count($links)>0) { +echo T_("Existing links:"); +foreach($links as $link) { + echo '<span style="white-space:nowrap;margin-left:25px;">'; + if($link['tag1'] == $tag1 || $link['tag1'] == $tag2) { + $textTag1 = '<b>'.$tag1.'</b>'; + } else { + $textTag1 = $link['tag1']; + } + if($link['tag2'] == $tag1 || $link['tag2'] == $tag2) { + $textTag2 = '<b>'.$tag2.'</b>'; + } else { + $textTag2 = $link['tag2']; + } + + echo $textTag1.' '.$link['relationType'].' '.$textTag2; + echo "</span> "; +} +} else { + echo T_('No links'); +} + +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/tagcommondescriptionedit.tpl.php b/data/templates/default/tagcommondescriptionedit.tpl.php new file mode 100644 index 0000000..207cfd2 --- /dev/null +++ b/data/templates/default/tagcommondescriptionedit.tpl.php @@ -0,0 +1,48 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); + +?> +<script type="text/javascript"> +window.onload = function() { + document.getElementById("description").focus(); +} +</script> +<form action="<?php echo $formaction; ?>" method="post"> +<table> +<tr> + <th align="left"><?php echo T_('Description'); ?></th> + <td><textarea name="description" cols="75" rows="10"><?php echo $description['cdDescription']; ?></textarea></td> +</tr> +<tr> + <td></td> + <td> + <?php + if(strlen($description['cdDatetime'])>0) { + echo T_('Last modification:').' '.$description['cdDatetime'].', '; + $lastUser = $userservice->getUser($description['uId']); + echo '<a href="' . createURL('profile', $lastUser['username']) . '">' + . SemanticScuttle_Model_UserArray::getName($lastUser) . '</a>'; + } + ?> + </td> + <td></td> +</tr> +<tr> + <td></td> + <td> + <input type="submit" name="confirm" value="<?php echo T_('Update'); ?>" /> + <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" /> + </td> + <td></td> +</tr> +</table> + +<?php if (isset($referrer)): ?> +<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div> +<?php endif; ?> +<div><input type="hidden" name="tag" value="<?php echo $tag; ?>" /></div> +</form> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/tagdelete.tpl.php b/data/templates/default/tagdelete.tpl.php new file mode 100644 index 0000000..e787ff5 --- /dev/null +++ b/data/templates/default/tagdelete.tpl.php @@ -0,0 +1,20 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<form action="<?php echo $formaction; ?>" method="post"> +<p><?php echo T_('Are you sure?'); ?></p> +<p> + <input type="submit" name="confirm" value="<?php echo T_('Yes'); ?>" /> + <input type="submit" name="cancel" value="<?php echo T_('No'); ?>" /> +</p> + +<?php if (isset($referrer)): ?> +<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div> +<?php endif; ?> + +</form> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?>
\ No newline at end of file diff --git a/data/templates/default/tagedit.tpl.php b/data/templates/default/tagedit.tpl.php new file mode 100644 index 0000000..860c933 --- /dev/null +++ b/data/templates/default/tagedit.tpl.php @@ -0,0 +1,33 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> +<script type="text/javascript"> +window.onload = function() { + document.getElementById("description").focus(); +} +</script> +<form action="<?php echo $formaction; ?>" method="post"> +<table> +<tr> + <th align="left"><?php echo T_('Description'); ?></th> + <td><textarea name="description" cols="75" rows="10"><?php echo $description['tDescription']; ?></textarea></td> +</tr> +<tr> + <td></td> + <td> + <input type="submit" name="confirm" value="<?php echo T_('Update'); ?>" /> + <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" /> + </td> + <td></td> +</tr> +</table> + +<?php if (isset($referrer)): ?> +<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div> +<?php endif; ?> +<div><input type="hidden" name="tag" value="<?php echo $tag; ?>" /></div> +</form> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/tagrename.tpl.php b/data/templates/default/tagrename.tpl.php new file mode 100644 index 0000000..e3d0467 --- /dev/null +++ b/data/templates/default/tagrename.tpl.php @@ -0,0 +1,40 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> +<script type="text/javascript"> +window.onload = function() { + document.getElementById("new").focus(); +} +</script> +<form action="<?php echo $formaction; ?>" method="post"> +<table> +<tr> + <th align="left"><?php echo T_('Old'); ?></th> + <td><input type="text" name="old" id="old" value="<?php echo $old; ?>" /></td> + <td>← <?php echo T_('Required'); ?></td> +</tr> +<tr> + <th align="left"><?php echo T_('New'); ?></th> + <td><input type="text" name="new" id="new" value="" /></td> + <td>← <?php echo T_('Required'); ?></td> +</tr> +<tr> + <td></td> + <td> + <input type="submit" name="confirm" value="<?php echo T_('Rename'); ?>" /> + <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" /> + </td> + <td></td> +</tr> + +</table> + +<?php if (isset($referrer)): ?> +<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div> +<?php endif; ?> + +</form> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?>
\ No newline at end of file diff --git a/data/templates/default/tags.tpl.php b/data/templates/default/tags.tpl.php new file mode 100644 index 0000000..d6259cc --- /dev/null +++ b/data/templates/default/tags.tpl.php @@ -0,0 +1,31 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<?php +if ($tags && count($tags) > 0) { +?> + +<p id="sort"> + <?php echo T_("Sort by:"); ?> + <a href="?sort=alphabet_asc"><?php echo T_("Alphabet"); ?></a><span> / </span> + <a href="?sort=popularity_asc"><?php echo T_("Popularity"); ?></a> +</p> +<p class="tags"> + +<?php +$contents = ''; +foreach ($tags as $row) { + $entries = T_ngettext('bookmark', 'bookmarks', $row['bCount']); + $contents .= '<a href="'. sprintf($cat_url, $user, filter($row['tag'], 'url')) .'" title="'. $row['bCount'] .' '. $entries .'" rel="tag" style="font-size:'. $row['size'] .'">'. filter($row['tag']) .'</a> '; +} +echo $contents ."\n"; +?> + +</p> + +<?php +} +$this->includeTemplate('sidebar.tpl'); +$this->includeTemplate($GLOBALS['bottom_include']); +?> diff --git a/data/templates/default/toolbar.inc.php b/data/templates/default/toolbar.inc.php new file mode 100644 index 0000000..fb6638d --- /dev/null +++ b/data/templates/default/toolbar.inc.php @@ -0,0 +1,37 @@ +<?php +if ($userservice->isLoggedOn() && is_object($currentUser)) { + $cUserId = $userservice->getCurrentUserId(); + $cUsername = $currentUser->getUsername(); +?> + + <ul id="navigation"> + <li><a href="<?php echo createURL(''); ?>"><?php echo T_('Home'); ?></a></li> + <li><a href="<?php echo createURL('bookmarks', $cUsername); ?>"><?php echo T_('Bookmarks'); ?></a></li> + <li><a href="<?php echo createURL('alltags', $cUsername); ?>"><?php echo T_('Tags'); ?></a></li> + <li><a href="<?php echo createURL('watchlist', $cUsername); ?>"><?php echo T_('Watchlist'); ?></a></li> + <li><a href="<?php echo $userservice->getProfileUrl($cUserId, $cUsername); ?>"><?php echo T_('Profile'); ?></a></li> + <li><a href="<?php echo createURL('bookmarks', $cUsername . '?action=add'); ?>"><?php echo T_('Add a Bookmark'); ?></a></li> + <li class="access"><?php echo $cUsername?><a href="<?php echo ROOT ?>?action=logout">(<?php echo T_('Log Out'); ?>)</a></li> + <li><a href="<?php echo createURL('about'); ?>"><?php echo T_('About'); ?></a></li> + <?php if($currentUser->isAdmin()): ?>
+ <li><a href="<?php echo createURL('admin', ''); ?>"><?php echo '['.T_('Admin').']'; ?></a></li>
+ <?php endif; ?> + + </ul> + +<?php +} else { +?> + <ul id="navigation"> + <li><a href="<?php echo createURL(''); ?>"><?php echo T_('Home'); ?></a></li> + <li><a href="<?php echo createURL('populartags'); ?>"><?php echo T_('Popular Tags'); ?></a></li> + <li><a href="<?php echo createURL('about'); ?>"><?php echo T_('About'); ?></a></li> + <li class="access"><a href="<?php echo createURL('login'); ?>"><?php echo T_('Log In'); ?></a></li> + <?php if ($GLOBALS['enableRegistration']) { ?> + <li class="access"><a href="<?php echo createURL('register'); ?>"><?php echo T_('Register'); ?></a></li> + <?php } ?> + </ul> + +<?php +} +?> diff --git a/data/templates/default/top.inc.php b/data/templates/default/top.inc.php new file mode 100644 index 0000000..79cc2e2 --- /dev/null +++ b/data/templates/default/top.inc.php @@ -0,0 +1,83 @@ +<?php echo '<'; ?>?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> + <head> + <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <title><?php echo filter($GLOBALS['sitename'] .(isset($pagetitle) ? ' » ' . $pagetitle : '')); ?></title> + <link rel="icon" type="image/png" href="<?php echo $theme->resource('icon.png');?>" /> + <link rel="stylesheet" type="text/css" href="<?php echo $theme->resource('scuttle.css');?>" /> + <link rel="search" type="application/opensearchdescription+xml" href="<?php echo ROOT ?>api/opensearch.php" title="<?php echo htmlspecialchars($GLOBALS['sitename']) ?>"/> +<?php +if (isset($rsschannels)) { + $size = count($rsschannels); + for ($i = 0; $i < $size; $i++) { + echo ' <link rel="alternate" type="application/rss+xml" title="' + . htmlspecialchars($rsschannels[$i][0]) . '"' + . ' href="'. htmlspecialchars($rsschannels[$i][1]) .'" />' . "\n"; + } +} +?> + +<?php if (isset($loadjs)) :?> +<?php if (DEBUG_MODE) : ?> + <script type="text/javascript" src="<?php echo ROOT_JS ?>jquery-1.4.2.js"></script> + <script type="text/javascript" src="<?php echo ROOT_JS ?>jquery.jstree.js"></script> +<?php else: ?> + <script type="text/javascript" src="<?php echo ROOT_JS ?>jquery-1.4.2.min.js"></script> + <script type="text/javascript" src="<?php echo ROOT_JS ?>jquery.jstree.min.js"></script> +<?php endif ?> + <script type="text/javascript" src="<?php echo ROOT ?>jsScuttle.php"></script> +<?php endif ?> + + </head> +<?php +$bodystyle = ''; +if (isset($_GET['popup'])) { + if (isset($_GET['height'])) { + $bodystyle .= 'height:' . intval($_GET['height']) . 'px;'; + } + if (isset($_GET['width'])) { + $bodystyle .= 'width:' . intval($_GET['width']) . 'px;'; + } + if ($bodystyle != '') { + $bodystyle = ' style="' . $bodystyle . '"'; + } +} +?> + <body<?php echo $bodystyle; ?>> + +<?php +$headerstyle = ''; +if (isset($_GET['popup'])) { + $headerstyle = ' class="popup"'; +} +?> + +<div id="header" <?php echo $headerstyle; ?>> +<h1><a href="<?php echo ROOT ?>"><?php echo $GLOBALS['sitename']; ?></a></h1> +<?php +if(!isset($_GET['popup'])) { + $this->includeTemplate('toolbar.inc'); +} +?></div> + +<?php +if (isset($subtitlehtml)) { + echo '<h2>' . $subtitlehtml . "</h2>\n"; +} else if (isset($subtitle)) { + echo '<h2>' . htmlspecialchars($subtitle) . "</h2>\n"; +} +if(DEBUG_MODE) { + echo '<p class="error">'. T_('Admins, your installation is in "Debug Mode" ($debugMode = true). To go in "Normal Mode" and hide debugging messages, change $debugMode to false into config.php.') ."</p>\n"; +} +if (isset($error) && $error!='') { + echo '<p class="error">'. $error ."</p>\n"; +} +if (isset($msg) && $msg!='') { + echo '<p class="success">'. $msg ."</p>\n"; +} +if (isset($tipMsg) && $tipMsg!='') { + echo '<p class="tipMsg">'. $tipMsg ."</p>\n"; +} +?> diff --git a/data/templates/default/users.tpl.php b/data/templates/default/users.tpl.php new file mode 100644 index 0000000..fa92bef --- /dev/null +++ b/data/templates/default/users.tpl.php @@ -0,0 +1,33 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); + +if ($users && count($users) > 0) { +?> + +<!--p id="sort"> + <?php echo T_("Sort by:"); ?> + <a href="?sort=alphabet_asc"><?php echo T_("Alphabet"); ?></a><span> / </span> + <a href="?sort=popularity_asc"><?php echo T_("Popularity"); ?></a> +</p--> +<p class="users"> +<ul> +<?php +$contents = '<'; +foreach ($users as $row) { + echo '<li><strong>' + . SemanticScuttle_Model_UserArray::getName($row) . '</strong>' + . ' (<a href="' . createURL('profile', $row['username']) . '">' + . T_('profile') . '</a> ' + . T_('created in') . ' ' + . date('M Y', strtotime($row['uDatetime'])) . ')' + . ' : <a href="' . createURL('bookmarks', $row['username']).'">' + . T_('bookmarks') . '</a></li>'; +} +?> +</ul> +</p> + +<?php +} +$this->includeTemplate($GLOBALS['bottom_include']); +?> |