summaryrefslogtreecommitdiff
path: root/data/templates
diff options
context:
space:
mode:
authorcweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>2009-10-03 14:00:33 +0000
committercweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>2009-10-03 14:00:33 +0000
commit29422fa55379aa61a61019b832c83dab6d450264 (patch)
treee5884ce6fed2cf1d02165a1b5667b99cd80262e5 /data/templates
parentb8b1d06b2d899658fae64d0de506439ca0ea067c (diff)
downloadsemanticscuttle-29422fa55379aa61a61019b832c83dab6d450264.tar.gz
semanticscuttle-29422fa55379aa61a61019b832c83dab6d450264.tar.bz2
move files to new locations
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@386 b3834d28-1941-0410-a4f8-b48e95affb8f
Diffstat (limited to 'data/templates')
-rw-r--r--data/templates/about.tpl.php34
-rw-r--r--data/templates/admin.tpl.php35
-rw-r--r--data/templates/bookmarkcommondescriptionedit.tpl.php57
-rw-r--r--data/templates/bookmarks.tpl.php344
-rw-r--r--data/templates/bottom.inc.php34
-rw-r--r--data/templates/dojo.inc.php35
-rw-r--r--data/templates/dynamictags.inc.php141
-rw-r--r--data/templates/editbookmark.tpl.php177
-rw-r--r--data/templates/editprofile.tpl.php73
-rw-r--r--data/templates/error.404.tpl.php9
-rw-r--r--data/templates/error.500.tpl.php9
-rw-r--r--data/templates/importDelicious.tpl.php42
-rw-r--r--data/templates/importNetscape.tpl.php50
-rw-r--r--data/templates/importStructure.tpl.php42
-rw-r--r--data/templates/login.tpl.php41
-rw-r--r--data/templates/password.tpl.php26
-rw-r--r--data/templates/profile.tpl.php74
-rw-r--r--data/templates/register.tpl.php49
-rw-r--r--data/templates/rss.tpl.php28
-rw-r--r--data/templates/sidebar.block.common.php28
-rw-r--r--data/templates/sidebar.block.linked.php105
-rw-r--r--data/templates/sidebar.block.menu.php80
-rw-r--r--data/templates/sidebar.block.menu2.php58
-rw-r--r--data/templates/sidebar.block.popular.php44
-rw-r--r--data/templates/sidebar.block.recent.php39
-rw-r--r--data/templates/sidebar.block.related.php40
-rw-r--r--data/templates/sidebar.block.search.php34
-rw-r--r--data/templates/sidebar.block.tagactions.php35
-rw-r--r--data/templates/sidebar.block.users.php34
-rw-r--r--data/templates/sidebar.block.watchlist.php60
-rw-r--r--data/templates/sidebar.block.watchstatus.php28
-rw-r--r--data/templates/sidebar.linkedtags.inc.php84
-rw-r--r--data/templates/sidebar.tpl.php19
-rw-r--r--data/templates/tag2tagadd.tpl.php57
-rw-r--r--data/templates/tag2tagdelete.tpl.php49
-rw-r--r--data/templates/tag2tagedit.tpl.php73
-rw-r--r--data/templates/tagcommondescriptionedit.tpl.php48
-rw-r--r--data/templates/tagdelete.tpl.php20
-rw-r--r--data/templates/tagedit.tpl.php34
-rw-r--r--data/templates/tagrename.tpl.php41
-rw-r--r--data/templates/tags.tpl.php31
-rw-r--r--data/templates/toolbar.inc.php35
-rw-r--r--data/templates/top.inc.php61
-rw-r--r--data/templates/users.tpl.php26
44 files changed, 2463 insertions, 0 deletions
diff --git a/data/templates/about.tpl.php b/data/templates/about.tpl.php
new file mode 100644
index 0000000..4a93d75
--- /dev/null
+++ b/data/templates/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://del.icio.us/doc/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.94</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/admin.tpl.php b/data/templates/admin.tpl.php
new file mode 100644
index 0000000..c8d47e8
--- /dev/null
+++ b/data/templates/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/bookmarkcommondescriptionedit.tpl.php b/data/templates/bookmarkcommondescriptionedit.tpl.php
new file mode 100644
index 0000000..af5909a
--- /dev/null
+++ b/data/templates/bookmarkcommondescriptionedit.tpl.php
@@ -0,0 +1,57 @@
+<?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']).'">'.$lastUser['username'].'</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/bookmarks.tpl.php b/data/templates/bookmarks.tpl.php
new file mode 100644
index 0000000..2b673b7
--- /dev/null
+++ b/data/templates/bookmarks.tpl.php
@@ -0,0 +1,344 @@
+<?php
+
+/* Service creation: only useful services are created */
+$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
+$tagservice =& ServiceFactory::getServiceInstance('TagService');
+$cdservice =& ServiceFactory::getServiceInstance('CommonDescriptionService');
+
+
+$pageName = isset($pageName)?$pageName:"";
+$user = isset($user)?$user:"";
+$currenttag = isset($currenttag)?$currenttag:"";
+
+
+$this->includeTemplate($GLOBALS['top_include']);
+
+include('search.inc.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 ROOT ?>images/logo_24.gif" width="12px"/> <?php echo T_('Bookmarks on this page are managed by an admin user.'); ?><img src="<?php echo ROOT ?>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="'.ROOT.'images/b_edit.png" /></a>';
+ } elseif(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="'.ROOT.'images/b_edit.png" /></a>';
+ }
+}
+?></p>
+
+<?php
+ }
+}
+?>
+
+<?php if (count($bookmarks) > 0) { ?>
+<script type="text/javascript">
+window.onload = playerLoad;
+</script>
+
+<p id="sort"><?php echo $total.' '.T_("bookmark(s)"); ?> - <?php echo T_("Sort by:"); ?>
+<?php
+switch(getSortOrder()) {
+ case 'date_asc':
+ $titleArrow = '';
+ $dateArrow = ' &uarr;';
+ $dateSort = 'date_desc';
+ $titleSort = 'title_asc';
+ break;
+ case 'title_asc':
+ $titleArrow = ' &uarr;';
+ $dateArrow = '';
+ $dateSort = 'date_desc';
+ $titleSort = 'title_desc';
+ break;
+ case 'title_desc':
+ $titleArrow = ' &darr;';
+ $dateArrow = '';
+ $dateSort = 'date_desc';
+ $titleSort = 'title_asc';
+ break;
+ case 'date_desc':
+ default:
+ $titleArrow = '';
+ $dateArrow = ' &darr;';
+ $dateSort = 'date_asc';
+ $titleSort = 'title_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($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='. GET_SORT;
+ }
+
+ $sortAmp = (($sortOrder) ? '&amp;'. $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="'. $rsschannels[$i][1] .'" title="'. $rsschannels[$i][0] .'"><img src="'. ROOT .'images/rss.gif" width="16" height="16" alt="'. $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
+ foreach(array_keys($bookmarks) as $key) {
+ $row =& $bookmarks[$key];
+ switch ($row['bStatus']) {
+ case 0:
+ $access = '';
+ break;
+ case 1:
+ $access = ' shared';
+ break;
+ case 2:
+ $access = ' private';
+ break;
+ }
+
+ $cats = '';
+ $tagsForCopy = '';
+ $tags = $row['tags'];
+ foreach(array_keys($tags) as $key) {
+
+ $tag =& $tags[$key];
+ $cats .= '<a href="'. sprintf($cat_url, filter($row['username'], 'url'), filter($tag, 'url')) .'" rel="tag">'. filter($tag) .'</a>, ';
+ $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><script type="text/javascript">document.write(" - <a href=\"#\" onclick=\"deleteBookmark(this, '. $row['bId'] .'); return false;\">'. T_('Delete') .'<\/a>");</script>';
+ }
+
+ // Last update
+ $update = ' <small title="'. T_('Last update') .'">('. date($GLOBALS['shortdate'], strtotime($row['bModified'])). ') </small>';
+
+ // User attribution
+ $copy = ' '. T_('by'). ' ';
+ if($userservice->isLoggedOn() && $currentUser->getUsername() == $row['username']) {
+ $copy.= T_('you');
+ } else {
+ $copy.= '<a href="'. createURL('bookmarks', $row['username']) .'">'. $row['username'] .'</a>';
+ }
+
+ // Udders!
+ if (!isset($hash)) {
+ $others = $bookmarkservice->countOthers($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);
+ }
+ }
+
+ // Copy link
+ if ($userservice->isLoggedOn()
+ && ($currentUser->getId() != $row['uId'])
+ && !$bookmarkservice->bookmarkExists($row['bAddress'], $currentUser->getId())) {
+ $copy .= ' - <a href="'. createURL('bookmarks', $currentUser->getUsername() .'?action=add&amp;copyOf='. $row['bId']) .'" title="'.T_('Copy this bookmark to YOUR bookmarks.').'">'. T_('Copy') .'</a>';
+ }
+
+ // Nofollow option
+ $rel = '';
+ if ($GLOBALS['nofollow']) {
+ $rel = ' rel="nofollow"';
+ }
+
+ $address = filter($row['bAddress']);
+
+ // Redirection option
+ if ($GLOBALS['useredir']) {
+ $address = $GLOBALS['url_redir'] . $address;
+ }
+
+ // Admin specific design
+ if($userservice->isAdmin($row['uId'])) {
+ $adminBgClass = 'class="adminBackground"';
+ $adminStar = ' <img src="'. ROOT .'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($userservice->isLoggedOn() && ($currentUser->getId() == $row['uId'] || in_array($row['username'], $userservice->getWatchNames($currentUser->getId(), true)))) {
+ $privateNoteField = $row['bPrivateNote'];
+ } else {
+ $privateNoteField = '';
+ }
+
+ // Output
+ echo '<li class="xfolkentry'. $access .'" >'."\n";
+ if ($GLOBALS['enableWebsiteThumbnails']) {
+ $thumbnailHash = md5($address.$GLOBALS['thumbnailsUserId'].$GLOBALS['thumbnailsKey']);
+ //echo '<a href="'. $address .'"'. $rel .' ><img class="thumbnail" src="http://www.artviper.net/screenshots/screener.php?url='.$address.'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />';
+ echo '<img class="thumbnail" onclick="window.location.href=\''.$address.'\'" src="http://www.artviper.net/screenshots/screener.php?url='.$address.'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />';
+ }
+
+ echo '<div '.$adminBgClass.' >';;
+
+ echo '<div class="link"><a href="'. $address .'"'. $rel .' class="taggedlink" target="_blank">'. filter($row['bTitle']) ."</a>" . $adminStar . "</div>\n";
+ if ($row['bDescription'] == '') {
+ $bkDescription = '-';
+ } 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";
+ //if(!isset($hash)) {
+ echo '<div class="address">'.shortenString($address).'</div>';
+ //}
+
+ echo '<div class="meta">'. $cats . $copy . $edit . $update ."</div>\n";
+ echo $privateNoteField!=''?'<div class="privateNote" title="'. T_('Private Note on this bookmark') .'">'.$privateNoteField."</div>\n":'';
+ echo '</div>';
+
+ 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>';
+ }
+ 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/bottom.inc.php b/data/templates/bottom.inc.php
new file mode 100644
index 0000000..a1b65bf
--- /dev/null
+++ b/data/templates/bottom.inc.php
@@ -0,0 +1,34 @@
+<!--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>";
+
+if($GLOBALS['enableWebsiteThumbnails']) {
+ // Licence to the thumbnails provider (OBLIGATORY IF YOU USE ARTVIPER SERVICE)
+ echo " (<a href=\"http://www.artviper.net\" title=\"artViper designstudio\">thumbnails by artViper designstudio</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/dojo.inc.php b/data/templates/dojo.inc.php
new file mode 100644
index 0000000..16b22c6
--- /dev/null
+++ b/data/templates/dojo.inc.php
@@ -0,0 +1,35 @@
+<?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
+ ***************************************************************************/
+
+?>
+
+<?php if (isset($loadjs)) :?>
+<script type="text/javascript"
+ src="http://ajax.googleapis.com/ajax/libs/dojo/1.2/dojo/dojo.xd.js"
+ djConfig="parseOnLoad:true, isDebug:<?php echo DEBUG_MODE?'true':'false' ?>, usePlainJson:true, baseUrl: '<?php echo ROOT ?>', modulePaths: {'js': 'includes/js'}"></script>
+
+<script type="text/javascript">
+dojo.require("dojo.parser");
+dojo.require("dojo.data.ItemFileReadStore");
+dojo.require("js.MultiComboBox"); // DOJO module adapted for SemanticScuttle
+dojo.require("dijit.Tree");
+</script>
+<?php endif ?> \ No newline at end of file
diff --git a/data/templates/dynamictags.inc.php b/data/templates/dynamictags.inc.php
new file mode 100644
index 0000000..c6b0d16
--- /dev/null
+++ b/data/templates/dynamictags.inc.php
@@ -0,0 +1,141 @@
+<?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 = & ServiceFactory :: getServiceInstance('Bookmark2TagService');
+
+$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) {
+ echo 'document.write(\'<div class="collapsible">\');';
+ echo 'document.write(\'<h3>'. $title .'<\/h3>\');';
+ echo 'document.write(\'<p id="popularTags" class="tags">\');';
+
+ $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 'document.write(\''. $taglist .'\');';
+ echo 'document.write(\'<\/p>\');';
+ echo 'document.write(\'<\/div>\');';
+
+}
+
+
+if ($allPopularTagsCount > 0 || $userPopularTagsCount > 0 ) { ?>
+
+<script type="text/javascript">
+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();
+ }
+}
+
+addonload(
+ function () {
+ var taglist = document.getElementById('tags');
+ var tags = taglist.value.split(', ');
+
+ var populartags = document.getElementById('popularTags').getElementsByTagName('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();
+}
+
+<?php
+if( $userPopularTagsCount > 0) {
+ writeTagsProposition($userPopularTagsCloud, T_('Popular Tags'));
+}
+if( $allPopularTagsCount > 0) {
+ writeTagsProposition($allPopularTagsCloud, T_('Popular Tags From All Users'));
+}
+
+
+?>
+
+</script>
+
+<?php
+}
+?>
diff --git a/data/templates/editbookmark.tpl.php b/data/templates/editbookmark.tpl.php
new file mode 100644
index 0000000..8a08717
--- /dev/null
+++ b/data/templates/editbookmark.tpl.php
@@ -0,0 +1,177 @@
+<?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;
+}
+
+$this->includeTemplate("dojo.inc");
+?>
+
+
+
+<script type="text/javascript">
+//window.onload = function() {
+// document.getElementById("address").focus();
+//}
+</script>
+
+<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>&larr; <?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>&larr; <?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>&larr; <?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>&larr; <?php echo T_('Just visible by you and your contacts.'); ?>
+ </td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('Tags'); ?></th>
+ <td class="scuttletheme">
+ <span dojoType="dojo.data.ItemFileReadStore" jsId="memberTagStore" url="<?php echo ROOT?>ajax/<?php echo ($GLOBALS['adminsAreAdvisedTagsFromOtherAdmins'] && $currentUser->isAdmin())?'getadmintags':'getcontacttags'?>.php"></span>
+ <input type="text" dojoType="js.MultiComboBox" id="tags" name="tags" size="75" value="<?php echo filter(implode(', ', $row['tags']), 'xml'); ?>" store="memberTagStore" delimiter="," searchAttr="tag" hasDownArrow="false" queryExpr="*${0}*" autoComplete="false" highlightMatch="all"/></td>
+ <td>&larr; <?php echo T_('Comma-separated'); ?></td>
+</tr>
+<tr>
+ <th></th>
+ <td align="right"><small><?php echo 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>
+
+<?php
+// Dynamic tag selection
+$this->includeTemplate('dynamictags.inc');
+
+// Bookmarklets and import links
+if (empty($_REQUEST['popup']) && (!isset($showdelete) || !$showdelete)) {
+?>
+
+<h3><?php echo T_('Bookmarklet'); ?></h3>
+<p>
+<script type="text/javascript">
+var browser=navigator.appName;
+if (browser == "Opera")
+ {
+ document.write("<?php echo 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']); ?>:</p>");
+ }
+else
+ {
+ document.write("<?php echo 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']); ?>:</p>");
+ }
+var selection = '';
+if (window.getSelection) {
+ selection = 'window.getSelection()';
+} else if (document.getSelection) {
+ selection = 'document.getSelection()';
+} else if (document.selection) {
+ selection = 'document.selection.createRange().text';
+}
+document.write('<ul>');
+if (browser == "Opera")
+ {
+ document.write('<li><a class="bookmarklet" href="opera:/button/Go%20to%20page,%20%22javascript:x=document;a=encodeURIComponent(x.location.href);t=encodeURIComponent(x.title);d=encodeURIComponent('+selection+');location.href=\'<?php echo createURL('bookmarks', $GLOBALS['user']); ?>?action=add&amp;address=\'+a+\'&amp;title=\'+t+\'&amp;description=\'+d;void 0%22;,,%22Post%20to%20<?php echo $GLOBALS['sitename']; ?>%22,%22Scuttle%22"><?php echo sprintf(T_('Post to %s'), $GLOBALS['sitename']); ?><\/a><\/li>');
+ document.write('<li><a class="bookmarklet" href="opera:/button/Go%20to%20page,%20%22javascript:x=document;a=encodeURIComponent(x.location.href);t=encodeURIComponent(x.title);d=encodeURIComponent('+selection+');open(\'<?php echo createURL('bookmarks', $GLOBALS['user']); ?>?action=add&amp;popup=1&amp;address=\'+a+\'&amp;title=\'+t+\'&amp;description=\'+d,\'<?php echo $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;%22,,%22Post%20to%20<?php echo $GLOBALS['sitename']; ?>%20(Pop-up)%22,%22Scuttle%22"><?php echo sprintf(T_('Post to %s (Pop-up)'), $GLOBALS['sitename']); ?><\/a><\/li>');
+ }
+else
+ {
+ document.write('<li><a class="bookmarklet" href="javascript:x=document;a=encodeURIComponent(x.location.href);t=encodeURIComponent(x.title);d=encodeURIComponent('+selection+');location.href=\'<?php echo createURL('bookmarks', $GLOBALS['user']); ?>?action=add&amp;address=\'+a+\'&amp;title=\'+t+\'&amp;description=\'+d;void 0;"><?php echo sprintf(T_('Post to %s'), $GLOBALS['sitename']); ?><\/a><\/li>');
+ document.write('<li><a class="bookmarklet" href="javascript:x=document;a=encodeURIComponent(x.location.href);t=encodeURIComponent(x.title);d=encodeURIComponent('+selection+');open(\'<?php echo createURL('bookmarks', $GLOBALS['user']); ?>?action=add&amp;popup=1&amp;address=\'+a+\'&amp;title=\'+t+\'&amp;description=\'+d,\'<?php echo $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 sprintf(T_('Post to %s (Pop-up)'), $GLOBALS['sitename']); ?><\/a><\/li>');
+ }
+document.write('<\/ul>');
+</script>
+
+<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/editprofile.tpl.php b/data/templates/editprofile.tpl.php
new file mode 100644
index 0000000..b55d250
--- /dev/null
+++ b/data/templates/editprofile.tpl.php
@@ -0,0 +1,73 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form action="<?php echo $formaction; ?>" method="post">
+<input type="hidden" name="token" value="<?php echo $token; ?>">
+
+</table>
+
+<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>&larr; <?php echo T_('Required'); ?></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>
+<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 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/error.404.tpl.php b/data/templates/error.404.tpl.php
new file mode 100644
index 0000000..fe9401d
--- /dev/null
+++ b/data/templates/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/error.500.tpl.php b/data/templates/error.500.tpl.php
new file mode 100644
index 0000000..1d7f7ae
--- /dev/null
+++ b/data/templates/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/importDelicious.tpl.php b/data/templates/importDelicious.tpl.php
new file mode 100644
index 0000000..bc4d892
--- /dev/null
+++ b/data/templates/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="http://del.icio.us/api/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/importNetscape.tpl.php b/data/templates/importNetscape.tpl.php
new file mode 100644
index 0000000..627a5af
--- /dev/null
+++ b/data/templates/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 &gt; Import and Export... &gt; Export Favorites'); ?></kbd></li>
+ <li><?php echo T_('Mozilla Firefox: <kbd>Bookmarks &gt; Manage Bookmarks... &gt; File &gt; Export...'); ?></kbd></li>
+ <li><?php echo T_('Netscape: <kbd>Bookmarks &gt; Manage Bookmarks... &gt; Tools &gt; 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/importStructure.tpl.php b/data/templates/importStructure.tpl.php
new file mode 100644
index 0000000..9c54612
--- /dev/null
+++ b/data/templates/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>&nbsp;&nbsp;&nbsp;&nbsp;firstTagOfLevel2 <i>(the line starts with two spaces)</i></li>
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;secondTagOfLevel2</li>
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;thirdTagOfLevel2</li>
+ <li>secondTagOfLevel1</li>
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;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/login.tpl.php b/data/templates/login.tpl.php
new file mode 100644
index 0000000..e68ab54
--- /dev/null
+++ b/data/templates/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" value="yes" /> <?php echo T_("Don't ask for my password for 2 weeks"); ?>.</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><input type="submit" name="submitted" value="<?php echo T_('Log In'); ?>" /></td>
+ <td></td>
+ </tr>
+ </table>
+ <p>&raquo; <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/password.tpl.php b/data/templates/password.tpl.php
new file mode 100644
index 0000000..55dbed6
--- /dev/null
+++ b/data/templates/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/profile.tpl.php b/data/templates/profile.tpl.php
new file mode 100644
index 0000000..1e2003a
--- /dev/null
+++ b/data/templates/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/register.tpl.php b/data/templates/register.tpl.php
new file mode 100644
index 0000000..da3deec
--- /dev/null
+++ b/data/templates/register.tpl.php
@@ -0,0 +1,49 @@
+<?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="email"><?php echo T_('E-mail'); ?></label></th>
+ <td><input type="text" id="email" name="email" size="40" class="required" /></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/rss.tpl.php b/data/templates/rss.tpl.php
new file mode 100644
index 0000000..0f03c06
--- /dev/null
+++ b/data/templates/rss.tpl.php
@@ -0,0 +1,28 @@
+<?php
+echo '<?xml version="1.0" encoding="UTF-8" ?'.">\n";
+?>
+
+<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<channel>
+ <title><?php echo $feedtitle; ?></title>
+ <link><?php echo $feedlink; ?></link>
+ <description><?php echo $feeddescription; ?></description>
+ <ttl>60</ttl>
+
+<?php foreach($bookmarks as $bookmark): ?>
+ <item>
+ <title><?php echo $bookmark['title']; ?></title>
+ <link><?php echo $bookmark['link']; ?></link>
+ <description><?php echo $bookmark['description']; ?></description>
+ <dc:creator><?php echo $bookmark['creator']; ?></dc:creator>
+ <pubDate><?php echo $bookmark['pubdate']; ?></pubDate>
+
+ <?php foreach($bookmark['tags'] as $tag): ?>
+ <category><?php echo $tag; ?></category>
+ <?php endforeach; ?>
+
+ </item>
+<?php endforeach; ?>
+
+</channel>
+</rss> \ No newline at end of file
diff --git a/data/templates/sidebar.block.common.php b/data/templates/sidebar.block.common.php
new file mode 100644
index 0000000..6f1e9f7
--- /dev/null
+++ b/data/templates/sidebar.block.common.php
@@ -0,0 +1,28 @@
+<?php
+$b2tservice =& ServiceFactory::getServiceInstance('Bookmark2TagService');
+$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/sidebar.block.linked.php b/data/templates/sidebar.block.linked.php
new file mode 100644
index 0000000..0fa36c9
--- /dev/null
+++ b/data/templates/sidebar.block.linked.php
@@ -0,0 +1,105 @@
+<?php
+/* Service creation: only useful services are created */
+$tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService');
+
+require_once('sidebar.linkedtags.inc.php');
+
+/* Manage input */
+$user = isset($user)?$user:'';
+$userid = isset($userid)?$userid:0;
+$currenttag = isset($currenttag)?$currenttag:'';
+$summarizeLinkedTags = isset($summarizeLinkedTags)?$summarizeLinkedTags:false;
+
+
+$logged_on_userid = $userservice->getCurrentUserId();
+if ($logged_on_userid === false) {
+ $logged_on_userid = NULL;
+}
+
+$explodedTags = array();
+if (strlen($currenttag)>0) {
+ $explodedTags = explode('+', $currenttag);
+} else {
+ if($summarizeLinkedTags == true) {
+ $orphewTags = $tag2tagservice->getOrphewTags('>', $userid, 4, "nb");
+ } else {
+ $orphewTags = $tag2tagservice->getOrphewTags('>', $userid);
+ }
+
+ foreach($orphewTags as $orphewTag) {
+ $explodedTags[] = $orphewTag['tag'];
+ }
+}
+
+?>
+
+<?php
+if(($logged_on_userid != null) && ($userid === $logged_on_userid)) {
+ $editingMode = true;
+} else {
+ $editingMode = false;
+}
+
+$this->includeTemplate("dojo.inc");
+?>
+
+<?php if(count($explodedTags)>0 || $editingMode):?>
+
+<h2><?php
+
+
+echo T_('Linked Tags').' ';
+//if($userid != null) {
+$cUser = $userservice->getUser($userid);
+//echo '<small><a href="'.createURL('alltags', $cUser['username']).'">('.T_('all tags').')</a></small>';
+//}
+?></h2>
+<?php //endif?>
+
+<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>';
+}
+
+if(strlen($user)==0) {
+ $cat_url = createURL('tags', '%2$s');
+}
+
+$stopList = array();
+foreach($explodedTags as $explodedTag) {
+ if(!in_array($explodedTag, $stopList)) {
+
+
+
+ // fathers tag
+ $fatherTags = $tag2tagservice->getLinkedTags($explodedTag, '>', $userid, true);
+ if(count($fatherTags)>0) {
+ foreach($fatherTags as $fatherTag) {
+ echo '<a href="'. sprintf($cat_url, filter($user, 'url'), filter($fatherTag, 'url')) .'" rel="tag">('. filter($fatherTag) .')</a> ';
+ }
+ }
+ /*
+ $displayLinkedTags = displayLinkedTags($explodedTag, '>', $userid, $cat_url, $user, $editingMode, null, 1);
+ echo $displayLinkedTags['output'];
+ if(is_array($displayLinkedTags['stopList'])) {
+ $stopList = array_merge($stopList, $displayLinkedTags['stopList']);
+ }*/
+ echo '<div dojoType="dojo.data.ItemFileReadStore" url="'.ROOT.'ajax/getlinkedtags.php?tag='.filter($explodedTag, 'url').'&amp;uId='.$userid.'" jsid="linkedTagStore" ></div>';
+ echo '<div dojoType="dijit.Tree" store="linkedTagStore" labelAttr="name" >';
+ echo '<script type="dojo/method" event="onClick" args="item">';
+ $returnUrl = sprintf($cat_url, filter($user, 'url'), filter('', 'url'));
+ echo 'window.location = "'.$returnUrl.'"+item.name';
+ echo '</script>';
+ echo '<script type="dojo/method" event="getLabelClass" args="item">';
+ echo 'return \'treeTag\';';
+ echo '</script>';
+ echo '</div>';
+ }
+
+}
+?> </div>
+
+<?php endif?>
diff --git a/data/templates/sidebar.block.menu.php b/data/templates/sidebar.block.menu.php
new file mode 100644
index 0000000..ed1069a
--- /dev/null
+++ b/data/templates/sidebar.block.menu.php
@@ -0,0 +1,80 @@
+<?php
+/* Service creation: only useful services are created */
+$tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService');
+
+
+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> &rarr;</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> &rarr;</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> &rarr;</p>
+<?php endif; ?>
+</div>
+
+<?php
+}
+?>
diff --git a/data/templates/sidebar.block.menu2.php b/data/templates/sidebar.block.menu2.php
new file mode 100644
index 0000000..8329ef3
--- /dev/null
+++ b/data/templates/sidebar.block.menu2.php
@@ -0,0 +1,58 @@
+<?php
+/* Service creation: only useful services are created */
+$tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService');
+
+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', '%2$s');
+$menu2Tags = $GLOBALS['menu2Tags'];
+
+if (sizeOf($menu2Tags) > 0) {
+ $this->includeTemplate("dojo.inc");
+ ?>
+
+<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.').'"'?>>
+
+<?php
+foreach($menu2Tags as $menu2Tag) {
+
+ echo '<div dojoType="dojo.data.ItemFileReadStore" url="'.ROOT.'ajax/getadminlinkedtags.php?tag='.filter($menu2Tag, 'url').'" jsid="linkedTagStore" ></div>';
+ echo '<div dojoType="dijit.Tree" store="linkedTagStore" labelAttr="name" >';
+ echo '<script type="dojo/method" event="onClick" args="item">';
+ $returnUrl = sprintf($cat_url, filter($user, 'url'), filter('', 'url'));
+ echo 'window.location = "'.$returnUrl.'"+item.name';
+ echo '</script>';
+ //echo '<script type="dojo/method" event="getLabel" args="item">';
+ //echo 'return item.name + "...";';
+ //echo '</script>';
+ //echo '<script type="dojo/method" event="onMouseOver" args="item">';
+ //echo 'i = item.relatedTarget;';
+ //echo 'if(i.innerHTML.charAt(i.innerHTML)=="a") alert(i.innerHTML)';
+ //echo '</script>';
+ //echo '<script type="dojo/method" event="getLabelClass" args="item">';
+ //echo 'return \'treeTag\';';
+ //echo '</script>';
+ echo '</div>';
+}
+?>
+</div>
+
+
+<?php
+}
+?>
diff --git a/data/templates/sidebar.block.popular.php b/data/templates/sidebar.block.popular.php
new file mode 100644
index 0000000..4279620
--- /dev/null
+++ b/data/templates/sidebar.block.popular.php
@@ -0,0 +1,44 @@
+<?php
+/* Service creation: only useful services are created */
+$b2tservice =& ServiceFactory::getServiceInstance('Bookmark2TagService');
+
+
+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/sidebar.block.recent.php b/data/templates/sidebar.block.recent.php
new file mode 100644
index 0000000..71f9aa9
--- /dev/null
+++ b/data/templates/sidebar.block.recent.php
@@ -0,0 +1,39 @@
+<?php
+/* Service creation: only useful services are created */
+$b2tservice =& ServiceFactory::getServiceInstance('Bookmark2TagService');
+
+/* 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> &rarr;</p>
+</div>
+
+<?php
+}
+?>
diff --git a/data/templates/sidebar.block.related.php b/data/templates/sidebar.block.related.php
new file mode 100644
index 0000000..182ea83
--- /dev/null
+++ b/data/templates/sidebar.block.related.php
@@ -0,0 +1,40 @@
+<?php
+/* Service creation: only useful services are created */
+$b2tservice =& ServiceFactory::getServiceInstance('Bookmark2TagService');
+
+
+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/sidebar.block.search.php b/data/templates/sidebar.block.search.php
new file mode 100644
index 0000000..4e3c801
--- /dev/null
+++ b/data/templates/sidebar.block.search.php
@@ -0,0 +1,34 @@
+<?php
+/* Service creation: only useful services are created */
+$searchhistoryservice =& ServiceFactory::getServiceInstance('SearchHistoryService');
+
+$logged_on_userid = $userservice->getCurrentUserId();
+if ($logged_on_userid === false) {
+ $logged_on_userid = NULL;
+}
+
+$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="'.createURL('search', $range.'/'.$row['shTerms']).'">';
+ echo $row['shTerms'];
+ echo '</a>';
+ echo ' <span title="'.T_('Number of bookmarks for this query').'">('.$row['shNbResults'].')</span>';
+ echo '</td></tr>';
+}
+//echo '<tr><td><a href="'.createURL('users').'">...</a></td></tr>';
+?>
+
+</table>
+</div>
+<?php
+}
+?>
diff --git a/data/templates/sidebar.block.tagactions.php b/data/templates/sidebar.block.tagactions.php
new file mode 100644
index 0000000..3351866
--- /dev/null
+++ b/data/templates/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/sidebar.block.users.php b/data/templates/sidebar.block.users.php
new file mode 100644
index 0000000..3ad18bc
--- /dev/null
+++ b/data/templates/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 $row['username'];
+ 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> &rarr;</p>
+</div>
+<?php
+}
+?>
diff --git a/data/templates/sidebar.block.watchlist.php b/data/templates/sidebar.block.watchlist.php
new file mode 100644
index 0000000..8f4984e
--- /dev/null
+++ b/data/templates/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 ' &harr '. 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 ' &rarr; '. 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 ' &larr; '. 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/sidebar.block.watchstatus.php b/data/templates/sidebar.block.watchstatus.php
new file mode 100644
index 0000000..99574aa
--- /dev/null
+++ b/data/templates/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/sidebar.linkedtags.inc.php b/data/templates/sidebar.linkedtags.inc.php
new file mode 100644
index 0000000..555eafc
--- /dev/null
+++ b/data/templates/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 =& ServiceFactory::getServiceInstance('Tag2TagService');
+ $tagstatservice =& ServiceFactory::getServiceInstance('TagStatService');
+
+ // 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('&nbsp;', $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/sidebar.tpl.php b/data/templates/sidebar.tpl.php
new file mode 100644
index 0000000..e823af5
--- /dev/null
+++ b/data/templates/sidebar.tpl.php
@@ -0,0 +1,19 @@
+<?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'].' ';
+
+$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/tag2tagadd.tpl.php b/data/templates/tag2tagadd.tpl.php
new file mode 100644
index 0000000..5c82223
--- /dev/null
+++ b/data/templates/tag2tagadd.tpl.php
@@ -0,0 +1,57 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form action="<?= $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/tag2tagdelete.tpl.php b/data/templates/tag2tagdelete.tpl.php
new file mode 100644
index 0000000..2f0715b
--- /dev/null
+++ b/data/templates/tag2tagdelete.tpl.php
@@ -0,0 +1,49 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form action="<?= $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/tag2tagedit.tpl.php b/data/templates/tag2tagedit.tpl.php
new file mode 100644
index 0000000..740a654
--- /dev/null
+++ b/data/templates/tag2tagedit.tpl.php
@@ -0,0 +1,73 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form action="<?= $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="<?= $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/tagcommondescriptionedit.tpl.php b/data/templates/tagcommondescriptionedit.tpl.php
new file mode 100644
index 0000000..d3a006a
--- /dev/null
+++ b/data/templates/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']).'">'.$lastUser['username'].'</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>
+</p>
+
+<?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/tagdelete.tpl.php b/data/templates/tagdelete.tpl.php
new file mode 100644
index 0000000..3e9744a
--- /dev/null
+++ b/data/templates/tagdelete.tpl.php
@@ -0,0 +1,20 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form action="<?= $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/tagedit.tpl.php b/data/templates/tagedit.tpl.php
new file mode 100644
index 0000000..5edfbc7
--- /dev/null
+++ b/data/templates/tagedit.tpl.php
@@ -0,0 +1,34 @@
+<?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>
+</p>
+
+<?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/tagrename.tpl.php b/data/templates/tagrename.tpl.php
new file mode 100644
index 0000000..ea8b516
--- /dev/null
+++ b/data/templates/tagrename.tpl.php
@@ -0,0 +1,41 @@
+<?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>&larr; <?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>&larr; <?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>
+</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/tags.tpl.php b/data/templates/tags.tpl.php
new file mode 100644
index 0000000..d6259cc
--- /dev/null
+++ b/data/templates/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/toolbar.inc.php b/data/templates/toolbar.inc.php
new file mode 100644
index 0000000..fa7170a
--- /dev/null
+++ b/data/templates/toolbar.inc.php
@@ -0,0 +1,35 @@
+<?php
+if ($userservice->isLoggedOn()) {
+ $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>
+ <li class="access"><a href="<?php echo createURL('register'); ?>"><?php echo T_('Register'); ?></a></li>
+ </ul>
+
+<?php
+}
+?>
diff --git a/data/templates/top.inc.php b/data/templates/top.inc.php
new file mode 100644
index 0000000..13b0347
--- /dev/null
+++ b/data/templates/top.inc.php
@@ -0,0 +1,61 @@
+<?php header('Content-Type: text/html; charset=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="text/html; charset=utf-8" />
+ <title><?php echo filter($GLOBALS['sitename'] .(isset($pagetitle) ? ' » ' . $pagetitle : '')); ?></title>
+ <link rel="icon" type="image/png" href="<?php echo ROOT ?>icon.png" />
+ <link rel="stylesheet" type="text/css" href="<?php echo ROOT ?>scuttle.css" />
+ <link rel="search" type="application/opensearchdescription+xml" href="<?php echo ROOT ?>api/opensearch.php" title="<?php echo $GLOBALS['sitename'] ?>"/>
+<?php
+if(isset($rsschannels)) {
+ $size = count($rsschannels);
+ for ($i = 0; $i < $size; $i++) {
+ echo ' <link rel="alternate" type="application/rss+xml" title="'. $rsschannels[$i][0] .'" href="'. $rsschannels[$i][1] .'" />';
+ }
+}
+?>
+ <link rel="stylesheet" type="text/css"
+ href="http://ajax.googleapis.com/ajax/libs/dojo/1.2/dijit/themes/nihilo/nihilo.css" />
+
+<?php if (isset($loadjs)) :?>
+ <script type="text/javascript" src="<?php echo ROOT ?>jsScuttle.php"></script>
+<?php endif ?>
+
+ </head>
+
+ <body class="nihilo">
+<!-- the class is used by Dojo widgets -->
+
+<?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($subtitle)) {
+ echo '<h2>'. $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.inc.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/users.tpl.php b/data/templates/users.tpl.php
new file mode 100644
index 0000000..c209f94
--- /dev/null
+++ b/data/templates/users.tpl.php
@@ -0,0 +1,26 @@
+<?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>'.$row['username'].'</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']);
+?>