slitaz-forge view forum/themes/slitaz/views/discussions/helper_functions.php @ rev 1

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