slitaz-forge annotate forum/vanilla/themes/slitaz/views/discussions/helper_functions.php @ rev 2

move vanilla-config & themes in vanilla directory
author Eric Joseph-Alexandre <erjo@slitaz.org>
date Wed Dec 22 10:41:18 2010 +0100 (2010-12-22)
parents
children
rev   line source
erjo@2 1 <?php
erjo@2 2 if (!defined('APPLICATION')) exit();
erjo@2 3
erjo@2 4 function WriteDiscussion($Discussion, &$Sender, &$Session, $Alt) {
erjo@2 5 $CssClass = 'Item';
erjo@2 6 $CssClass .= $Discussion->Bookmarked == '1' ? ' Bookmarked' : '';
erjo@2 7 $CssClass .= $Discussion->Closed == '1' ? ' Closed' : '';
erjo@2 8 $CssClass .= $Alt.' ';
erjo@2 9 $CssClass .= $Discussion->Announce == '1' ? ' Announcement' : '';
erjo@2 10 $CssClass .= $Discussion->Dismissed == '1' ? ' Dismissed' : '';
erjo@2 11 $CssClass .= $Discussion->InsertUserID == $Session->UserID ? ' Mine' : '';
erjo@2 12 $CssClass .= ($Discussion->CountUnreadComments > 0 && $Session->IsValid()) ? ' New' : '';
erjo@2 13 $Sender->EventArguments['Discussion'] = &$Discussion;
erjo@2 14 $First = UserBuilder($Discussion, 'First');
erjo@2 15 $Last = UserBuilder($Discussion, 'Last');
erjo@2 16
erjo@2 17 $Sender->FireEvent('BeforeDiscussionName');
erjo@2 18
erjo@2 19 $DiscussionName = Gdn_Format::Text($Discussion->Name);
erjo@2 20 if ($DiscussionName == '')
erjo@2 21 $DiscussionName = T('Blank Discussion Topic');
erjo@2 22
erjo@2 23 static $FirstDiscussion = TRUE;
erjo@2 24 if (!$FirstDiscussion)
erjo@2 25 $Sender->FireEvent('BetweenDiscussion');
erjo@2 26 else
erjo@2 27 $FirstDiscussion = FALSE;
erjo@2 28 ?>
erjo@2 29 <li class="<?php echo $CssClass; ?> ">
erjo@2 30 <?php
erjo@2 31 $Sender->FireEvent('BeforeDiscussionContent');
erjo@2 32 WriteOptions($Discussion, $Sender, $Session);
erjo@2 33 ?>
erjo@2 34 <div class="ItemContent Discussion">
erjo@2 35 <?php echo Anchor($DiscussionName, '/discussion/'.$Discussion->DiscussionID.'/'.Gdn_Format::Url($Discussion->Name).($Discussion->CountCommentWatch > 0 && C('Vanilla.Comments.AutoOffset') ? '/#Item_'.$Discussion->CountCommentWatch : ''), 'Title'); ?>
erjo@2 36 <?php $Sender->FireEvent('AfterDiscussionTitle'); ?>
erjo@2 37 <div class="Meta">
erjo@2 38 <?php if ($Discussion->Announce == '1') { ?>
erjo@2 39 <span class="Announcement"><?php echo T('Announcement'); ?></span>
erjo@2 40 <?php } ?>
erjo@2 41 <?php if ($Discussion->Closed == '1') { ?>
erjo@2 42 <span class="Closed"><?php echo T('Closed'); ?></span>
erjo@2 43 <?php } ?>
erjo@2 44 <span class="CommentCount"><?php printf(Plural($Discussion->CountComments, '%s comment', '%s comments'), $Discussion->CountComments); ?></span>
erjo@2 45 <?php
erjo@2 46 if ($Session->IsValid() && $Discussion->CountUnreadComments > 0)
erjo@2 47 echo '<strong>'.Plural($Discussion->CountUnreadComments, '%s New', '%s New Plural').'</strong>';
erjo@2 48
erjo@2 49 if ($Discussion->LastCommentID != '') {
erjo@2 50 echo '<span class="LastCommentBy">'.sprintf(T('Most recent by %1$s'), UserAnchor($Last)).'</span>';
erjo@2 51 echo '<span class="LastCommentDate">'.Gdn_Format::Date($Discussion->LastDate).'</span>';
erjo@2 52 } else {
erjo@2 53 echo '<span class="LastCommentBy">'.sprintf(T('Started by %1$s'), UserAnchor($First)).'</span>';
erjo@2 54 echo '<span class="LastCommentDate">'.Gdn_Format::Date($Discussion->FirstDate).'</span>';
erjo@2 55 }
erjo@2 56
erjo@2 57 if (C('Vanilla.Categories.Use'))
erjo@2 58 echo Wrap(Anchor($Discussion->Category, '/categories/'.$Discussion->CategoryUrlCode, 'Category'));
erjo@2 59
erjo@2 60 $Sender->FireEvent('DiscussionMeta');
erjo@2 61 ?>
erjo@2 62 </div>
erjo@2 63 </div>
erjo@2 64 </li>
erjo@2 65 <?php
erjo@2 66 }
erjo@2 67
erjo@2 68 function WriteFilterTabs(&$Sender) {
erjo@2 69 $Session = Gdn::Session();
erjo@2 70 $Title = property_exists($Sender, 'Category') && is_object($Sender->Category) ? $Sender->Category->Name : T('All Discussions');
erjo@2 71 $Bookmarked = T('My Bookmarks');
erjo@2 72 $MyDiscussions = T('My Discussions');
erjo@2 73 $MyDrafts = T('My Drafts');
erjo@2 74 $CountBookmarks = 0;
erjo@2 75 $CountDiscussions = 0;
erjo@2 76 $CountDrafts = 0;
erjo@2 77 if ($Session->IsValid()) {
erjo@2 78 $CountBookmarks = $Session->User->CountBookmarks;
erjo@2 79 $CountDiscussions = $Session->User->CountDiscussions;
erjo@2 80 $CountDrafts = $Session->User->CountDrafts;
erjo@2 81 }
erjo@2 82 if (is_numeric($CountBookmarks) && $CountBookmarks > 0)
erjo@2 83 $Bookmarked .= '<span>'.$CountBookmarks.'</span>';
erjo@2 84
erjo@2 85 if (is_numeric($CountDiscussions) && $CountDiscussions > 0)
erjo@2 86 $MyDiscussions .= '<span>'.$CountDiscussions.'</span>';
erjo@2 87
erjo@2 88 if (is_numeric($CountDrafts) && $CountDrafts > 0)
erjo@2 89 $MyDrafts .= '<span>'.$CountDrafts.'</span>';
erjo@2 90
erjo@2 91 ?>
erjo@2 92 <div class="Tabs DiscussionsTabs">
erjo@2 93 <ul>
erjo@2 94 <?php $Sender->FireEvent('BeforeDiscussionTabs'); ?>
erjo@2 95 <li<?php echo strtolower($Sender->ControllerName) == 'discussionscontroller' && strtolower($Sender->RequestMethod) == 'index' ? ' class="Active"' : ''; ?>><?php echo Anchor(T('All Discussions'), 'discussions'); ?></li>
erjo@2 96 <?php $Sender->FireEvent('AfterAllDiscussionsTab'); ?>
erjo@2 97 <?php if ($CountBookmarks > 0 || $Sender->RequestMethod == 'bookmarked') { ?>
erjo@2 98 <li<?php echo $Sender->RequestMethod == 'bookmarked' ? ' class="Active"' : ''; ?>><?php echo Anchor($Bookmarked, '/discussions/bookmarked', 'MyBookmarks'); ?></li>
erjo@2 99 <?php
erjo@2 100 $Sender->FireEvent('AfterBookmarksTab');
erjo@2 101 }
erjo@2 102 if ($CountDiscussions > 0 || $Sender->RequestMethod == 'mine') {
erjo@2 103 ?>
erjo@2 104 <li<?php echo $Sender->RequestMethod == 'mine' ? ' class="Active"' : ''; ?>><?php echo Anchor($MyDiscussions, '/discussions/mine', 'MyDiscussions'); ?></li>
erjo@2 105 <?php
erjo@2 106 }
erjo@2 107 if ($CountDrafts > 0 || $Sender->ControllerName == 'draftscontroller') {
erjo@2 108 ?>
erjo@2 109 <li<?php echo $Sender->ControllerName == 'draftscontroller' ? ' class="Active"' : ''; ?>><?php echo Anchor($MyDrafts, '/drafts', 'MyDrafts'); ?></li>
erjo@2 110 <?php
erjo@2 111 }
erjo@2 112 $Sender->FireEvent('AfterDiscussionTabs');
erjo@2 113 ?>
erjo@2 114 </ul>
erjo@2 115 <?php
erjo@2 116 if (property_exists($Sender, 'Category') && is_object($Sender->Category)) {
erjo@2 117 ?>
erjo@2 118 <div class="SubTab">↳ <?php echo $Sender->Category->Name; ?></div>
erjo@2 119 <?php
erjo@2 120 }
erjo@2 121 ?>
erjo@2 122 </div>
erjo@2 123 <?php
erjo@2 124 }
erjo@2 125
erjo@2 126 /**
erjo@2 127 * Render options that the user has for this discussion.
erjo@2 128 */
erjo@2 129 function WriteOptions($Discussion, &$Sender, &$Session) {
erjo@2 130 if ($Session->IsValid() && $Sender->ShowOptions) {
erjo@2 131 echo '<div class="Options">';
erjo@2 132 // Bookmark link
erjo@2 133 $Title = T($Discussion->Bookmarked == '1' ? 'Unbookmark' : 'Bookmark');
erjo@2 134 echo Anchor(
erjo@2 135 '<span class="Star">'
erjo@2 136 .Img('applications/dashboard/design/images/pixel.png', array('alt' => $Title))
erjo@2 137 .'</span>',
erjo@2 138 '/vanilla/discussion/bookmark/'.$Discussion->DiscussionID.'/'.$Session->TransientKey().'?Target='.urlencode($Sender->SelfUrl),
erjo@2 139 'Bookmark' . ($Discussion->Bookmarked == '1' ? ' Bookmarked' : ''),
erjo@2 140 array('title' => $Title)
erjo@2 141 );
erjo@2 142
erjo@2 143 $Sender->Options = '';
erjo@2 144
erjo@2 145 // Dismiss an announcement
erjo@2 146 if (C('Vanilla.Discussions.Dismiss', 1) && $Discussion->Announce == '1' && $Discussion->Dismissed != '1')
erjo@2 147 $Sender->Options .= '<li>'.Anchor(T('Dismiss'), 'vanilla/discussion/dismissannouncement/'.$Discussion->DiscussionID.'/'.$Session->TransientKey(), 'DismissAnnouncement') . '</li>';
erjo@2 148
erjo@2 149 // Edit discussion
erjo@2 150 if ($Discussion->FirstUserID == $Session->UserID || $Session->CheckPermission('Vanilla.Discussions.Edit', TRUE, 'Category', $Discussion->CategoryID))
erjo@2 151 $Sender->Options .= '<li>'.Anchor(T('Edit'), 'vanilla/post/editdiscussion/'.$Discussion->DiscussionID, 'EditDiscussion') . '</li>';
erjo@2 152
erjo@2 153 // Announce discussion
erjo@2 154 if ($Session->CheckPermission('Vanilla.Discussions.Announce', TRUE, 'Category', $Discussion->CategoryID))
erjo@2 155 $Sender->Options .= '<li>'.Anchor(T($Discussion->Announce == '1' ? 'Unannounce' : 'Announce'), 'vanilla/discussion/announce/'.$Discussion->DiscussionID.'/'.$Session->TransientKey(), 'AnnounceDiscussion') . '</li>';
erjo@2 156
erjo@2 157 // Sink discussion
erjo@2 158 if ($Session->CheckPermission('Vanilla.Discussions.Sink', TRUE, 'Category', $Discussion->CategoryID))
erjo@2 159 $Sender->Options .= '<li>'.Anchor(T($Discussion->Sink == '1' ? 'Unsink' : 'Sink'), 'vanilla/discussion/sink/'.$Discussion->DiscussionID.'/'.$Session->TransientKey().'?Target='.urlencode($Sender->SelfUrl), 'SinkDiscussion') . '</li>';
erjo@2 160
erjo@2 161 // Close discussion
erjo@2 162 if ($Session->CheckPermission('Vanilla.Discussions.Close', TRUE, 'Category', $Discussion->CategoryID))
erjo@2 163 $Sender->Options .= '<li>'.Anchor(T($Discussion->Closed == '1' ? 'Reopen' : 'Close'), 'vanilla/discussion/close/'.$Discussion->DiscussionID.'/'.$Session->TransientKey().'?Target='.urlencode($Sender->SelfUrl), 'CloseDiscussion') . '</li>';
erjo@2 164
erjo@2 165 // Delete discussion
erjo@2 166 if ($Session->CheckPermission('Vanilla.Discussions.Delete', TRUE, 'Category', $Discussion->CategoryID))
erjo@2 167 $Sender->Options .= '<li>'.Anchor(T('Delete'), 'vanilla/discussion/delete/'.$Discussion->DiscussionID.'/'.$Session->TransientKey().'?Target='.urlencode($Sender->SelfUrl), 'DeleteDiscussion') . '</li>';
erjo@2 168
erjo@2 169 // Allow plugins to add options
erjo@2 170 $Sender->FireEvent('DiscussionOptions');
erjo@2 171
erjo@2 172 if ($Sender->Options != '') {
erjo@2 173 ?>
erjo@2 174 <ul class="Options">
erjo@2 175 <li>
erjo@2 176 <strong><?php echo T('Options'); ?></strong>
erjo@2 177 <ul>
erjo@2 178 <?php echo $Sender->Options; ?>
erjo@2 179 </ul>
erjo@2 180 </li>
erjo@2 181 </ul>
erjo@2 182 <?php
erjo@2 183 }
erjo@2 184 echo '</div>';
erjo@2 185 }
erjo@2 186 }