slitaz-forge annotate forum/vanilla/themes/slitaz-2/views/discussion/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 if (!defined('APPLICATION')) exit();
erjo@2 2
erjo@2 3 /**
erjo@2 4 * $Object is either a Comment or the original Discussion.
erjo@2 5 */
erjo@2 6 function WriteComment($Object, $Sender, $Session, $CurrentOffset, $counter) {
erjo@2 7 $Author = UserBuilder($Object, 'Insert');
erjo@2 8 $Type = property_exists($Object, 'CommentID') ? 'Comment' : 'Discussion';
erjo@2 9 $Sender->EventArguments['Object'] = $Object;
erjo@2 10 $Sender->EventArguments['Type'] = $Type;
erjo@2 11 $Sender->EventArguments['Author'] = $Author;
erjo@2 12 $CssClass = 'Item Comment ' . $counter;
erjo@2 13 if ($Type == 'Comment') {
erjo@2 14 $Sender->EventArguments['Comment'] = $Object;
erjo@2 15 $Id = 'Comment_'.$Object->CommentID;
erjo@2 16 $Permalink = '/discussion/comment/'.$Object->CommentID.'/#Comment_'.$Object->CommentID;
erjo@2 17 } else {
erjo@2 18 $Sender->EventArguments['Discussion'] = $Object;
erjo@2 19 $CssClass .= ' FirstComment';
erjo@2 20 $Id = 'Discussion_'.$Object->DiscussionID;
erjo@2 21 $Permalink = '/discussion/'.$Object->DiscussionID.'/'.Gdn_Format::Url($Object->Name).'/p1';
erjo@2 22 }
erjo@2 23 $Sender->Options = '';
erjo@2 24 $CssClass .= $Object->InsertUserID == $Session->UserID ? ' Mine' : '';
erjo@2 25 $Sender->FireEvent('BeforeCommentDisplay');
erjo@2 26 ?>
erjo@2 27 <li class="<?php echo $CssClass; ?>" id="<?php echo $Id; ?>">
erjo@2 28 <div class="Comment">
erjo@2 29 <div class="Meta">
erjo@2 30 <?php $Sender->FireEvent('BeforeCommentMeta'); ?>
erjo@2 31 <div class="Author">
erjo@2 32 <?php
erjo@2 33 echo UserPhoto($Author);
erjo@2 34 echo UserAnchor($Author);
erjo@2 35 ?>
erjo@2 36 <div class="clear">&nbsp;</div>
erjo@2 37 </div>
erjo@2 38 <span class="DateCreated">
erjo@2 39 <?php
erjo@2 40 echo Gdn_Format::Date($Object->DateInserted);
erjo@2 41 ?>
erjo@2 42 </span>
erjo@2 43 <span class="Permalink">
erjo@2 44 <?php echo Anchor(T('Permalink'), $Permalink, 'Permalink', array('name' => 'Item_'.($CurrentOffset+1), 'rel' => 'nofollow')); ?>
erjo@2 45 </span>
erjo@2 46 <?php WriteOptionList($Object, $Sender, $Session); ?>
erjo@2 47 <div class="CommentInfo">
erjo@2 48 <?php $Sender->FireEvent('CommentInfo'); ?>
erjo@2 49 </div>
erjo@2 50 <?php $Sender->FireEvent('AfterCommentMeta'); ?>
erjo@2 51 </div>
erjo@2 52 <div class="Message">
erjo@2 53 <?php $Sender->FireEvent('BeforeCommentBody'); ?>
erjo@2 54 <?php
erjo@2 55 $Object->FormatBody = Gdn_Format::To($Object->Body, $Object->Format);
erjo@2 56 $Sender->FireEvent('AfterCommentFormat');
erjo@2 57 $Object = $Sender->EventArguments['Object'];
erjo@2 58 echo $Object->FormatBody;
erjo@2 59 ?>
erjo@2 60 </div><div class="clear">&nbsp;</div>
erjo@2 61 <?php $Sender->FireEvent('AfterCommentBody'); ?>
erjo@2 62 </div>
erjo@2 63 </li>
erjo@2 64 <?php
erjo@2 65 $Sender->FireEvent('AfterComment');
erjo@2 66 }
erjo@2 67
erjo@2 68 function WriteOptionList($Object, $Sender, $Session) {
erjo@2 69 $EditContentTimeout = C('Garden.EditContentTimeout', -1);
erjo@2 70 $CanEdit = $EditContentTimeout == -1 || strtotime($Object->DateInserted) + $EditContentTimeout > time();
erjo@2 71 $TimeLeft = '';
erjo@2 72 if ($CanEdit && $EditContentTimeout > 0) {
erjo@2 73 $TimeLeft = strtotime($Object->DateInserted) + $EditContentTimeout - time();
erjo@2 74 $TimeLeft = $TimeLeft > 0 ? ' ('.Gdn_Format::Seconds($TimeLeft).')' : '';
erjo@2 75 }
erjo@2 76
erjo@2 77 $Sender->Options = '';
erjo@2 78 $CategoryID = GetValue('CategoryID', $Object);
erjo@2 79 if(!$CategoryID && property_exists($Sender, 'Discussion'))
erjo@2 80 $CategoryID = GetValue('CategoryID', $Sender->Discussion);
erjo@2 81
erjo@2 82 // Show discussion options if this is the discussion / first comment
erjo@2 83 if ($Sender->EventArguments['Type'] == 'Discussion') {
erjo@2 84 // Can the user edit the discussion?
erjo@2 85 if (($CanEdit && $Session->UserID == $Object->InsertUserID) || $Session->CheckPermission('Vanilla.Discussions.Edit', TRUE, 'Category', $CategoryID))
erjo@2 86 $Sender->Options .= '<span>'.Anchor(T('Edit'), '/vanilla/post/editdiscussion/'.$Object->DiscussionID, 'EditDiscussion').$TimeLeft.'</span>';
erjo@2 87
erjo@2 88 // Can the user announce?
erjo@2 89 if ($Session->CheckPermission('Vanilla.Discussions.Announce', TRUE, 'Category', $CategoryID))
erjo@2 90 $Sender->Options .= '<span>'.Anchor(T($Sender->Discussion->Announce == '1' ? 'Unannounce' : 'Announce'), 'vanilla/discussion/announce/'.$Object->DiscussionID.'/'.$Session->TransientKey(), 'AnnounceDiscussion') . '</span>';
erjo@2 91
erjo@2 92 // Can the user sink?
erjo@2 93 if ($Session->CheckPermission('Vanilla.Discussions.Sink', TRUE, 'Category', $CategoryID))
erjo@2 94 $Sender->Options .= '<span>'.Anchor(T($Sender->Discussion->Sink == '1' ? 'Unsink' : 'Sink'), 'vanilla/discussion/sink/'.$Object->DiscussionID.'/'.$Session->TransientKey().'?Target='.urlencode($Sender->SelfUrl), 'SinkDiscussion') . '</span>';
erjo@2 95
erjo@2 96 // Can the user close?
erjo@2 97 if ($Session->CheckPermission('Vanilla.Discussions.Close', TRUE, 'Category', $CategoryID))
erjo@2 98 $Sender->Options .= '<span>'.Anchor(T($Sender->Discussion->Closed == '1' ? 'Reopen' : 'Close'), 'vanilla/discussion/close/'.$Object->DiscussionID.'/'.$Session->TransientKey().'?Target='.urlencode($Sender->SelfUrl), 'CloseDiscussion') . '</span>';
erjo@2 99
erjo@2 100 // Can the user delete?
erjo@2 101 if ($Session->CheckPermission('Vanilla.Discussions.Delete', TRUE, 'Category', $CategoryID))
erjo@2 102 $Sender->Options .= '<span>'.Anchor(T('Delete Discussion'), 'vanilla/discussion/delete/'.$Object->DiscussionID.'/'.$Session->TransientKey(), 'DeleteDiscussion') . '</span>';
erjo@2 103 } else {
erjo@2 104 // And if this is just another comment in the discussion ...
erjo@2 105
erjo@2 106 // Can the user edit the comment?
erjo@2 107 if (($CanEdit && $Session->UserID == $Object->InsertUserID) || $Session->CheckPermission('Vanilla.Comments.Edit', TRUE, 'Category', $Sender->Discussion->CategoryID))
erjo@2 108 $Sender->Options .= '<span>'.Anchor(T('Edit'), '/vanilla/post/editcomment/'.$Object->CommentID, 'EditComment').$TimeLeft.'</span>';
erjo@2 109
erjo@2 110 // Can the user delete the comment?
erjo@2 111 if ($Session->CheckPermission('Vanilla.Comments.Delete', TRUE, 'Category', $CategoryID))
erjo@2 112 $Sender->Options .= '<span>'.Anchor(T('Delete'), 'vanilla/discussion/deletecomment/'.$Object->CommentID.'/'.$Session->TransientKey().'/?Target='.urlencode($Sender->SelfUrl), 'DeleteComment') . '</span>';
erjo@2 113 }
erjo@2 114
erjo@2 115 // Allow plugins to add options
erjo@2 116 $Sender->FireEvent('CommentOptions');
erjo@2 117 echo $Sender->Options;
erjo@2 118 }