本文整理汇总了PHP中Format::Url方法的典型用法代码示例。如果您正苦于以下问题:PHP Format::Url方法的具体用法?PHP Format::Url怎么用?PHP Format::Url使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Format
的用法示例。
在下文中一共展示了Format::Url方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: Index
public function Index($Offset = 0, $Limit = NULL)
{
$this->AddJsFile('/js/library/jquery.gardenmorepager.js');
$this->AddJsFile('search.js');
$this->Title(Translate('Search'));
if (!is_numeric($Limit)) {
$Limit = Gdn::Config('Garden.Search.PerPage', 20);
}
$Search = $this->Form->GetFormValue('Search');
$ResultSet = $this->SearchModel->Search($Search, $Offset, $Limit);
$this->SetData('SearchResults', $ResultSet, TRUE);
$this->SetData('SearchTerm', Format::Text($Search), TRUE);
$NumResults = $ResultSet->NumRows();
if ($NumResults == $Offset + $Limit) {
$NumResults++;
}
// Build a pager
$PagerFactory = new PagerFactory();
$Pager = $PagerFactory->GetPager('MorePager', $this);
$Pager->MoreCode = 'More Results';
$Pager->LessCode = 'Previous Results';
$Pager->ClientID = 'Pager';
$Pager->Configure($Offset, $Limit, $NumResults, 'garden/search/%1$s/%2$s/?Search=' . Format::Url($Search));
$this->SetData('Pager', $Pager, TRUE);
$this->View = 'results';
$this->Render();
}
示例2: Comment
/**
* Create a comment.
*
* @param int The DiscussionID to add the comment to. If blank, this method will throw an error.
*/
public function Comment($DiscussionID = '')
{
$this->AddJsFile('js/library/jquery.autogrow.js');
$this->AddJsFile('post.js');
$this->AddJsFile('autosave.js');
$Session = Gdn::Session();
$this->Form->SetModel($this->CommentModel);
$CommentID = isset($this->Comment) && property_exists($this->Comment, 'CommentID') ? $this->Comment->CommentID : '';
$DraftID = isset($this->Comment) && property_exists($this->Comment, 'DraftID') ? $this->Comment->DraftID : '';
$this->EventArguments['CommentID'] = $CommentID;
$Editing = $CommentID > 0 || $DraftID > 0;
$this->EventArguments['Editing'] = $Editing;
$DiscussionID = is_numeric($DiscussionID) ? $DiscussionID : $this->Form->GetFormValue('DiscussionID', 0);
$this->Form->AddHidden('DiscussionID', $DiscussionID);
$this->Form->AddHidden('CommentID', $CommentID);
$this->Form->AddHidden('DraftID', $DraftID, TRUE);
$this->DiscussionID = $DiscussionID;
$Discussion = $this->DiscussionModel->GetID($DiscussionID);
if ($Editing) {
if ($this->Comment->InsertUserID != $Session->UserID) {
$this->Permission('Vanilla.Comments.Edit', $Discussion->CategoryID);
}
} else {
$this->Permission('Vanilla.Comments.Add', $Discussion->CategoryID);
}
if ($this->Form->AuthenticatedPostBack() === FALSE) {
if (isset($this->Comment)) {
$this->Form->SetData($this->Comment);
}
} else {
// Save as a draft?
$FormValues = $this->Form->FormValues();
if ($DraftID == 0) {
$DraftID = $this->Form->GetFormValue('DraftID', 0);
}
$Draft = $this->Form->ButtonExists('Save Draft') ? TRUE : FALSE;
$this->EventArguments['Draft'] = $Draft;
$Preview = $this->Form->ButtonExists('Preview') ? TRUE : FALSE;
if ($Draft) {
$DraftID = $this->DraftModel->Save($FormValues);
$this->Form->AddHidden('DraftID', $DraftID, TRUE);
$this->Form->SetValidationResults($this->DraftModel->ValidationResults());
} else {
if (!$Preview) {
$CommentID = $this->CommentModel->Save($FormValues);
$this->Form->SetValidationResults($this->CommentModel->ValidationResults());
if ($CommentID > 0 && $DraftID > 0) {
$this->DraftModel->Delete($DraftID);
}
}
}
// Handle non-ajax requests first:
if ($this->_DeliveryType == DELIVERY_TYPE_ALL) {
if ($this->Form->ErrorCount() == 0) {
// Make sure that this form knows what comment we are editing.
if ($CommentID > 0) {
$this->Form->AddHidden('CommentID', $CommentID);
}
// If the comment was not a draft
if (!$Draft) {
// Redirect redirect to the new comment
$Discussion = $this->DiscussionModel->GetID($DiscussionID);
Redirect('/vanilla/discussion/' . $DiscussionID . '/' . Format::Url($Discussion->Name) . '/#Comment_' . $CommentID);
} elseif ($Preview) {
// If this was a preview click, create a comment shell with the values for this comment
$this->Comment = new stdClass();
$this->Comment->InsertUserID = $Session->User->UserID;
$this->Comment->InsertName = $Session->User->Name;
$this->Comment->InsertPhoto = $Session->User->Photo;
$this->Comment->DateInserted = Format::Date();
$this->Comment->Body = ArrayValue('Body', $FormValues, '');
$this->AddAsset('Content', $this->FetchView('preview'));
} else {
// If this was a draft save, notify the user about the save
$this->StatusMessage = sprintf(Gdn::Translate('Draft saved at %s'), Format::Date());
}
}
} else {
// Handle ajax-based requests
if ($this->Form->ErrorCount() > 0) {
// Return the form errors
$this->StatusMessage = $this->Form->Errors();
} else {
// Make sure that the ajax request form knows about the newly created comment or draft id
$this->SetJson('CommentID', $CommentID);
$this->SetJson('DraftID', $DraftID);
if ($Preview) {
// If this was a preview click, create a comment shell with the values for this comment
$this->Comment = new stdClass();
$this->Comment->InsertUserID = $Session->User->UserID;
$this->Comment->InsertName = $Session->User->Name;
$this->Comment->InsertPhoto = $Session->User->Photo;
$this->Comment->DateInserted = Format::Date();
$this->Comment->Body = ArrayValue('Body', $FormValues, '');
$this->View = 'preview';
//.........这里部分代码省略.........
示例3: WriteDiscussion
function WriteDiscussion($Discussion, &$Sender, &$Session, $Alt)
{
$CssClass = 'DiscussionRow';
$CssClass .= $Discussion->Bookmarked == '1' ? ' Bookmarked' : '';
$CssClass .= $Alt . ' ';
$CssClass .= $Discussion->Announce == '1' ? ' Announcement' : '';
$CssClass .= $Discussion->InsertUserID == $Session->UserID ? ' Mine' : '';
$CountUnreadComments = $Discussion->CountComments - $Discussion->CountCommentWatch;
$CssClass .= $CountUnreadComments > 0 && $Session->IsValid() ? ' New' : '';
?>
<li class="<?php
echo $CssClass;
?>
">
<ul class="Discussion">
<?php
if ($Sender->ShowOptions) {
?>
<li class="Options">
<?php
// Build up the options that the user has for each discussion
if ($Session->IsValid()) {
// Bookmark link
echo Anchor('<span>*</span>', '/vanilla/discussion/bookmark/' . $Discussion->DiscussionID . '/' . $Session->TransientKey() . '?Target=' . urlencode($Sender->SelfUrl), 'Bookmark' . ($Discussion->Bookmarked == '1' ? ' Bookmarked' : ''), array('title' => Gdn::Translate($Discussion->Bookmarked == '1' ? 'Unbookmark' : 'Bookmark')));
$Sender->Options = '';
// Dismiss an announcement
if ($Discussion->Announce == '1' && $Discussion->Dismissed != '1') {
$Sender->Options .= '<li>' . Anchor('Dismiss', 'vanilla/discussion/dismissannouncement/' . $Discussion->DiscussionID . '/' . $Session->TransientKey(), 'DismissAnnouncement') . '</li>';
}
// Edit discussion
if ($Discussion->FirstUserID == $Session->UserID || $Session->CheckPermission('Vanilla.Discussions.Edit', $Discussion->CategoryID)) {
$Sender->Options .= '<li>' . Anchor('Edit', 'vanilla/post/editdiscussion/' . $Discussion->DiscussionID, 'EditDiscussion') . '</li>';
}
// Announce discussion
if ($Session->CheckPermission('Vanilla.Discussions.Announce', $Discussion->CategoryID)) {
$Sender->Options .= '<li>' . Anchor($Discussion->Announce == '1' ? 'Unannounce' : 'Announce', 'vanilla/discussion/announce/' . $Discussion->DiscussionID . '/' . $Session->TransientKey(), 'AnnounceDiscussion') . '</li>';
}
// Sink discussion
if ($Session->CheckPermission('Vanilla.Discussions.Sink', $Discussion->CategoryID)) {
$Sender->Options .= '<li>' . Anchor($Discussion->Sink == '1' ? 'Unsink' : 'Sink', 'vanilla/discussion/sink/' . $Discussion->DiscussionID . '/' . $Session->TransientKey() . '?Target=' . urlencode($Sender->SelfUrl), 'SinkDiscussion') . '</li>';
}
// Close discussion
if ($Session->CheckPermission('Vanilla.Discussions.Close', $Discussion->CategoryID)) {
$Sender->Options .= '<li>' . Anchor($Discussion->Closed == '1' ? 'Reopen' : 'Close', 'vanilla/discussion/close/' . $Discussion->DiscussionID . '/' . $Session->TransientKey() . '?Target=' . urlencode($Sender->SelfUrl), 'CloseDiscussion') . '</li>';
}
// Delete discussion
if ($Session->CheckPermission('Vanilla.Discussions.Delete', $Discussion->CategoryID)) {
$Sender->Options .= '<li>' . Anchor('Delete', 'vanilla/discussion/delete/' . $Discussion->DiscussionID . '/' . $Session->TransientKey() . '?Target=' . urlencode($Sender->SelfUrl), 'DeleteDiscussion') . '</li>';
}
// Allow plugins to add options
$Sender->FireEvent('DiscussionOptions');
if ($Sender->Options != '') {
?>
<ul class="Options">
<li><strong><?php
echo Gdn::Translate('Options');
?>
</strong>
<ul>
<?php
echo $Sender->Options;
?>
</ul>
</li>
</ul>
<?php
}
}
?>
</li>
<?php
}
?>
<li class="Title">
<strong><?php
echo Anchor(Format::Text($Discussion->Name), '/discussion/' . $Discussion->DiscussionID . '/' . Format::Url($Discussion->Name) . ($Discussion->CountCommentWatch > 0 ? '/#Item_' . $Discussion->CountCommentWatch : ''), 'DiscussionLink');
?>
</strong>
</li>
<li class="Meta">
<?php
echo '<span>';
echo sprintf(Plural($Discussion->CountComments, '%s comment', '%s comments'), $Discussion->CountComments);
echo '</span>';
if ($CountUnreadComments > 0 && $Session->IsValid()) {
echo '<strong>', sprintf(Gdn::Translate('%s new'), $CountUnreadComments), '</strong>';
}
echo '<span>';
printf(Gdn::Translate('Most recent by %1$s %2$s'), UserAnchor($Discussion->LastName), Format::Date($Discussion->LastDate));
echo '</span>';
echo Anchor($Discussion->Category, '/categories/' . urlencode($Discussion->Category), 'Category');
$Sender->FireEvent('DiscussionMeta');
?>
</li>
</ul>
</li>
<?php
}
示例4: ProfileController_Discussions_Create
public function ProfileController_Discussions_Create(&$Sender)
{
$UserReference = ArrayValue(0, $Sender->RequestArgs, '');
$Offset = ArrayValue(1, $Sender->RequestArgs, 0);
// Tell the ProfileController what tab to load
$Sender->SetTabView($UserReference, 'Discussions', 'Profile', 'Discussions', 'Vanilla');
// Load the data for the requested tab.
if (!is_numeric($Offset) || $Offset < 0) {
$Offset = 0;
}
$Limit = Gdn::Config('Vanilla.Discussions.PerPage', 30);
$DiscussionModel = new Gdn_DiscussionModel();
$Sender->DiscussionData = $DiscussionModel->Get($Offset, $Limit, array('d.InsertUserID' => $Sender->User->UserID));
$CountDiscussions = $Offset + $Sender->DiscussionData->NumRows();
if ($Sender->DiscussionData->NumRows() == $Limit) {
$CountDiscussions = $Offset + $Limit + 1;
}
// Build a pager
$PagerFactory = new PagerFactory();
$Sender->Pager = $PagerFactory->GetPager('MorePager', $Sender);
$Sender->Pager->MoreCode = 'More Discussions';
$Sender->Pager->LessCode = 'Newer Discussions';
$Sender->Pager->ClientID = 'Pager';
$Sender->Pager->Configure($Offset, $Limit, $CountDiscussions, 'profile/discussions/' . Format::Url($Sender->User->Name) . '/%1$s/');
// Deliver json data if necessary
if ($Sender->DeliveryType() != DELIVERY_TYPE_ALL && $Offset > 0) {
$Sender->SetJson('LessRow', $Sender->Pager->ToString('less'));
$Sender->SetJson('MoreRow', $Sender->Pager->ToString('more'));
$Sender->View = 'discussions';
}
// Set the handlertype back to normal on the profilecontroller so that it fetches it's own views
$Sender->HandlerType = HANDLER_TYPE_NORMAL;
// Do not show discussion options
$Sender->ShowOptions = FALSE;
// Render the ProfileController
$Sender->Render();
}
示例5: Index
public function Index($DiscussionID = '', $Offset = '', $Limit = '')
{
$this->AddCssFile('vanilla.css');
$Session = Gdn::Session();
if ($this->Head) {
$this->Head->AddScript('/js/library/jquery.resizable.js');
$this->Head->AddScript('/js/library/jquery.ui.packed.js');
$this->Head->AddScript('/js/library/jquery.autogrow.js');
$this->Head->AddScript('/js/library/jquery.gardenmorepager.js');
$this->Head->AddScript('/applications/vanilla/js/options.js');
$this->Head->AddScript('/applications/vanilla/js/bookmark.js');
$this->Head->AddScript('/applications/vanilla/js/discussion.js');
$this->Head->AddScript('/applications/vanilla/js/autosave.js');
}
// Load the discussion record
$DiscussionID = is_numeric($DiscussionID) && $DiscussionID > 0 ? $DiscussionID : 0;
$this->SetData('Discussion', $this->DiscussionModel->GetID($DiscussionID), TRUE);
if (!is_object($this->Discussion)) {
Redirect('FileNotFound');
}
// Check Permissions
$this->Permission('Vanilla.Discussions.View', $this->Discussion->CategoryID);
$this->SetData('CategoryID', $this->CategoryID = $this->Discussion->CategoryID, TRUE);
if ($this->Discussion === FALSE) {
return $this->ReDispatch('garden/home/filenotfound');
} else {
// Setup
if ($this->Head) {
$this->Head->Title(Format::Text($this->Discussion->Name));
}
// Define the query offset & limit
if (!is_numeric($Limit) || $Limit < 0) {
$Limit = Gdn::Config('Vanilla.Comments.PerPage', 50);
}
$this->Offset = $Offset;
if (!is_numeric($this->Offset) || $this->Offset < 0) {
// Round down to the appropriate offset based on the user's read comments & comments per page
$CountCommentWatch = $this->Discussion->CountCommentWatch > 0 ? $this->Discussion->CountCommentWatch : 0;
if ($CountCommentWatch > $this->Discussion->CountComments) {
$CountCommentWatch = $this->Discussion->CountComments;
}
// (((67 comments / 10 perpage) = 6.7) rounded down = 6) * 10 perpage = offset 60;
$this->Offset = floor($CountCommentWatch / $Limit) * $Limit;
}
if ($this->Offset < 0) {
$this->Offset = 0;
}
// Make sure to set the user's discussion watch records
$this->CommentModel->SetWatch($this->Discussion, $Limit, $this->Offset, $this->Discussion->CountComments);
// Load the comments
$this->SetData('CommentData', $this->CommentData = $this->CommentModel->Get($DiscussionID, $Limit, $this->Offset), TRUE);
// Build a pager
$PagerFactory = new PagerFactory();
$this->Pager = $PagerFactory->GetPager('MorePager', $this);
$this->Pager->MoreCode = '%1$s more comments';
$this->Pager->LessCode = '%1$s older comments';
$this->Pager->ClientID = 'Pager';
$this->Pager->Configure($this->Offset, $Limit, $this->Discussion->CountComments, 'vanilla/discussion/' . $DiscussionID . '/%1$s/%2$s/' . Format::Url($this->Discussion->Name));
}
// Define the form for the comment input
$this->Form = Gdn::Factory('Form', 'Comment');
$this->DiscussionID = $this->Discussion->DiscussionID;
$this->Form->AddHidden('DiscussionID', $this->DiscussionID);
$this->Form->AddHidden('CommentID', '');
$this->Form->AddHidden('DraftID', '');
$this->Form->Action = Url('/vanilla/post/comment/');
// Deliver json data if necessary
if ($this->_DeliveryType != DELIVERY_TYPE_ALL) {
$this->SetJson('LessRow', $this->Pager->ToString('less'));
$this->SetJson('MoreRow', $this->Pager->ToString('more'));
$this->View = 'comments';
}
// Add Modules
$this->AddModule('NewDiscussionModule');
$this->AddModule('CategoriesModule');
$DraftsModule = new DraftsModule($this);
$DraftsModule->GetData(20, $DiscussionID);
$this->AddModule($DraftsModule);
$BookmarkedModule = new BookmarkedModule($this);
$BookmarkedModule->GetData();
$this->AddModule($BookmarkedModule);
$this->FireEvent('DiscussionRenderBefore');
$this->Render();
}
示例6: RecordActivity
public function RecordActivity($UserID, $DiscussionID, $DiscussionName)
{
// Report that the discussion was created
AddActivity($UserID, 'NewDiscussion', Anchor(Format::Text($DiscussionName), 'vanilla/discussion/' . $DiscussionID . '/' . Format::Url($DiscussionName)));
// Get the user's discussion count
$Data = $this->SQL->Select('DiscussionID', 'count', 'CountDiscussions')->From('Discussion')->Where('InsertUserID', $UserID)->Get();
// Save the count to the user table
$this->SQL->Update('User')->Set('CountDiscussions', $Data->NumRows() > 0 ? $Data->FirstRow()->CountDiscussions : 0)->Where('UserID', $UserID)->Put();
}
示例7: PostController_Reply_Create
public function PostController_Reply_Create(&$Sender, $EventArguments = '')
{
$Sender->View = PATH_PLUGINS . DS . 'VanillaCommentReplies' . DS . 'views' . DS . 'vanilla_post_reply.php';
$ReplyCommentID = 0;
if (is_array($EventArguments) && array_key_exists(0, $EventArguments)) {
$ReplyCommentID = is_numeric($EventArguments[0]) ? $EventArguments[0] : 0;
}
$ReplyModel = Gdn::Factory('ReplyModel');
$Sender->ReplyCommentID = $ReplyCommentID;
// Set the model on the form.
$Sender->Form->SetModel($ReplyModel);
// Make sure the form knows which comment we're replying to
$Sender->Form->AddHidden('ReplyCommentID', $ReplyCommentID);
$Sender->ReplyComment = $Sender->CommentModel->GetID($ReplyCommentID);
$Discussion = $Sender->DiscussionModel->GetID($Sender->ReplyComment->DiscussionID);
$Sender->Permission('Vanilla.Comments.Add', $Discussion->CategoryID);
if ($Sender->Form->AuthenticatedPostBack()) {
$CommentID = $Sender->Form->Save();
if ($Sender->Form->ErrorCount() == 0) {
// Redirect if this is not an ajax request
if ($Sender->DeliveryType() == DELIVERY_TYPE_ALL) {
$Discussion = $ReplyModel->GetDiscussion($CommentID);
Redirect('/vanilla/discussion/' . $Discussion->DiscussionID . '/' . Format::Url($Discussion->Name) . '#Comment_' . $CommentID);
}
// Load all new replies that the user hasn't seen yet
$LastCommentID = $Sender->Form->GetFormValue('LastCommentID');
if (!is_numeric($LastCommentID)) {
$LastCommentID = $CommentID - 1;
}
$Sender->ReplyData = $ReplyModel->GetNew($ReplyCommentID, $LastCommentID);
$Sender->CurrentReply = is_object($Sender->ReplyData) ? $Sender->ReplyData->NextRow() : FALSE;
$Replies = $Sender->ReplyComment->CountReplies + 1;
$Sender->SetJson('Replies', sprintf(Translate(Plural($Replies, '%s Reply', '%s Replies')), $Replies));
$Sender->SetJson('CommentID', $CommentID);
$Sender->Discussion = $Sender->DiscussionModel->GetID($Sender->ReplyComment->DiscussionID);
$Sender->ControllerName = 'discussion';
$Sender->View = PATH_PLUGINS . DS . 'VanillaCommentReplies' . DS . 'views' . DS . 'replies.php';
} else {
if ($Sender->_DeliveryType !== DELIVERY_TYPE_ALL) {
// Handle ajax-based errors
$Sender->StatusMessage = $Sender->Form->Errors();
}
}
}
$Sender->Render();
}
示例8: foreach
<?php
if (!defined('APPLICATION')) {
exit;
}
$Session = Gdn::Session();
$CancelUrl = '/vanilla/discussions';
if (Gdn::Config('Vanilla.Categories.Use') === TRUE && $this->CategoryID > 0 && $this->CategoryData->NumRows() > 0) {
foreach ($this->CategoryData->Result() as $Cat) {
if ($Cat->CategoryID == $this->CategoryID) {
$CancelUrl = '/vanilla/discussions/0/' . $Cat->CategoryID . '/' . Format::Url($Cat->Name);
break;
}
}
}
?>
<div id="DiscussionForm">
<h2><?php
echo T(property_exists($this, 'Discussion') ? 'Edit Discussion' : 'Start a New Discussion');
?>
</h2>
<?php
echo $this->Form->Open();
echo $this->Form->Errors();
echo $this->Form->Label('Discussion Title', 'Name');
echo $this->Form->TextBox('Name', array('maxlength' => 100));
if (Gdn::Config('Vanilla.Categories.Use') === TRUE) {
echo '<div class="Category">';
echo $this->Form->Label('Category', 'CategoryID');
echo $this->Form->DropDown('CategoryID', $this->CategoryData, array('TextField' => 'Name', 'ValueField' => 'CategoryID'));
echo '</div>';
示例9: SendNotification
public function SendNotification($ActivityID, $Story = '')
{
$Activity = $this->GetID($ActivityID);
if (!is_object($Activity)) {
return;
}
$Story = Format::Text($Story == '' ? $Activity->Story : $Story);
// If this is a comment on another activity, fudge the activity a bit so that everything appears properly.
if (is_null($Activity->RegardingUserID) && $Activity->CommentActivityID > 0) {
$CommentActivity = $this->GetID($Activity->CommentActivityID);
$Activity->RegardingUserID = $CommentActivity->RegardingUserID;
$Activity->Route = '/profile/' . $CommentActivity->RegardingUserID . '/' . Format::Url($CommentActivity->RegardingName) . '/#Activity_' . $Activity->CommentActivityID;
}
$User = $this->SQL->Select('Name, Email, Preferences')->From('User')->Where('UserID', $Activity->RegardingUserID)->Get()->FirstRow();
if ($User) {
$Preferences = Format::Unserialize($User->Preferences);
$Preference = ArrayValue('Email.' . $Activity->ActivityType, $Preferences, Gdn::Config('Preferences.Email.' . $Activity->ActivityType));
if ($Preference) {
$ActivityHeadline = Format::Text(Format::ActivityHeadline($Activity, $Activity->ActivityUserID, $Activity->RegardingUserID));
$Email = new Gdn_Email();
$Email->Subject(sprintf(T('[%1$s] %2$s'), Gdn::Config('Garden.Title'), $ActivityHeadline));
$Email->To($User->Email, $User->Name);
$Email->From(Gdn::Config('Garden.SupportEmail'), Gdn::Config('Garden.SupportName'));
$Email->Message(sprintf(T($Story == '' ? 'EmailNotification' : 'EmailStoryNotification'), $ActivityHeadline, Url($Activity->Route == '' ? '/' : $Activity->Route, TRUE), $Story));
try {
$Email->Send();
} catch (Exception $ex) {
// Don't do anything with the exception.
}
}
}
}
示例10: AddProfileTab
/**
* Adds a tab (or array of tabs) to the profile tab collection.
*
* @param mixed The tab name (or array of tab names) to add to the profile tab collection.
* @param string URL the tab should point to.
*/
public function AddProfileTab($TabName, $TabUrl = '')
{
if (!is_array($TabName)) {
$TabName = array($TabName => $TabUrl);
}
foreach ($TabName as $Name => $Url) {
if ($Url == '') {
$Url = '/profile/' . strtolower($Name) . '/' . $this->User->UserID . '/' . Format::Url($this->User->Name);
}
$this->_ProfileTabs[$Name] = $Url;
}
}
示例11: Anchor
<?php
if (!defined('APPLICATION')) {
exit;
}
$Session = Gdn::Session();
if ($Session->IsValid()) {
// Bookmark link
echo Anchor('<span>*</span>', '/vanilla/discussion/bookmark/' . $this->Discussion->DiscussionID . '/' . $Session->TransientKey() . '?Target=' . urlencode($this->SelfUrl), 'Bookmark' . ($this->Discussion->Bookmarked == '1' ? ' Bookmarked' : ''), array('title' => Gdn::Translate($this->Discussion->Bookmarked == '1' ? 'Unbookmark' : 'Bookmark')));
}
?>
<h2><?php
if (Gdn::Config('Vanilla.Categories.Use') === TRUE) {
echo Anchor($this->Discussion->Category, 'categories/' . $this->Discussion->CategoryID . '/' . Format::Url($this->Discussion->Category));
echo '<span>•</span>';
}
echo Format::Text($this->Discussion->Name);
?>
</h2>
<?php
echo $this->Pager->ToString('less');
echo $this->RenderAsset('DiscussionBefore');
?>
<ul id="Discussion">
<?php
echo $this->FetchView('comments');
?>
</ul>
<?php
if ($this->Pager->LastPage()) {
$this->AddDefinition('DiscussionID', $this->Data['Discussion']->DiscussionID);
示例12: WriteDiscussion
function WriteDiscussion($Discussion, &$Sender, &$Session, $Alt)
{
$CssClass = 'Item';
$CssClass .= $Discussion->Bookmarked == '1' ? ' Bookmarked' : '';
$CssClass .= $Alt . ' ';
$CssClass .= $Discussion->Announce == '1' ? ' Announcement' : '';
$CssClass .= $Discussion->InsertUserID == $Session->UserID ? ' Mine' : '';
$CountUnreadComments = $Discussion->CountComments - $Discussion->CountCommentWatch;
$CssClass .= $CountUnreadComments > 0 && $Session->IsValid() ? ' New' : '';
$Sender->EventArguments['Discussion'] =& $Discussion;
$Last = UserBuilder($Discussion, 'Last');
?>
<li class="<?php
echo $CssClass;
?>
">
<?php
WriteOptions($Discussion, $Sender, $Session);
?>
<div class="ItemContent Discussion">
<?php
echo Anchor(Format::Text($Discussion->Name), '/discussion/' . $Discussion->DiscussionID . '/' . Format::Url($Discussion->Name) . ($Discussion->CountCommentWatch > 0 ? '/#Item_' . $Discussion->CountCommentWatch : ''), 'Title');
?>
<?php
$Sender->FireEvent('AfterDiscussionTitle');
?>
<div class="Meta">
<?php
if ($Discussion->Announce == '1') {
?>
<span class="Announcement"><?php
echo T('Announcement');
?>
</span>
<?php
}
?>
<span><?php
printf(Plural($Discussion->CountComments, '%s comment', '%s comments'), $Discussion->CountComments);
?>
</span>
<?php
if ($CountUnreadComments > 0 && $Session->IsValid()) {
echo '<strong>', sprintf(T('%s new'), $CountUnreadComments), '</strong>';
}
?>
<span><?php
printf(T('Most recent by %1$s %2$s'), UserAnchor($Last), Format::Date($Discussion->LastDate));
?>
</span>
<span><?php
echo Anchor($Discussion->Category, '/categories/' . $Discussion->CategoryUrlCode, 'Category');
?>
</span>
<?php
$Sender->FireEvent('DiscussionMeta');
?>
</div>
</div>
</li>
<?php
}
示例13: trim
$Class .= ' HasPhoto';
}
$Class = trim($Class);
$Name = $Session->UserID == $Conversation->LastMessageUserID ? 'You' : $Conversation->LastMessageName;
$JumpToItem = $Conversation->CountMessages - $Conversation->CountNewMessages;
?>
<li<?php
echo $Class == '' ? '' : ' class="' . $Class . '"';
?>
>
<?php
echo UserPhoto($Conversation->LastMessageName, $Conversation->LastMessagePhoto, 'Photo');
?>
<div>
<?php
echo Anchor($Name, '/profile/' . Format::Url($Conversation->LastMessageName), 'Name');
echo Anchor(SliceString(Format::Text($Conversation->LastMessage), 100), '/messages/' . $Conversation->ConversationID . '/#Item_' . $JumpToItem, 'Message');
echo '<div class="Meta">';
echo Format::Date($Conversation->DateLastMessage);
echo '<span>•</span>';
printf(Translate(Plural($Conversation->CountMessages, '%s message', '%s messages')), $Conversation->CountMessages);
if ($Conversation->CountNewMessages > 0) {
echo '<span>•</span>';
echo '<em>';
printf(Gdn::Translate('%s new'), $Conversation->CountNewMessages);
echo '</em>';
}
echo '</div>';
?>
</div>
</li>
示例14: Anchor
<?php
if (!defined('APPLICATION')) {
exit;
}
// An individual discussion record for all panel modules to use when rendering a discussion list.
?>
<li id="<?php
echo 'Bookmark_' . $Discussion->DiscussionID;
?>
">
<strong><?php
echo Anchor($Discussion->Name, '/discussion/' . $Discussion->DiscussionID . '/' . Format::Url($Discussion->Name) . ($Discussion->CountCommentWatch > 0 ? '/#Item_' . $Discussion->CountCommentWatch : ''), 'DiscussionLink');
?>
</strong>
<div class="Meta">
<?php
echo '<span>' . $Discussion->CountComments . '</span>';
$CountUnreadComments = $Discussion->CountComments - $Discussion->CountCommentWatch;
if ($CountUnreadComments > 0) {
echo '<strong>' . sprintf('%s new', $CountUnreadComments) . '</strong>';
}
$Last = new stdClass();
$Last->UserID = $Discussion->LastUserID;
$Last->Name = $Discussion->LastName;
echo '<span>' . Format::Date($Discussion->LastDate) . ' ' . UserAnchor($Last) . '</span>';
?>
</div>
</li>
示例15: foreach
if (!defined('APPLICATION')) {
exit;
}
$ViewLocation = $this->FetchViewLocation('discussions', 'discussions');
?>
<ul class="Categories">
<?php
foreach ($this->CategoryData->Result() as $Category) {
$this->Category = $Category;
$this->DiscussionData = $this->CategoryDiscussionData[$Category->CategoryID];
if ($this->DiscussionData->NumRows() > 0) {
?>
<li>
<h1><?php
echo Anchor($Category->Name, '/discussions/0/' . $Category->CategoryID . '/' . Format::Url($Category->Name));
?>
</h1>
<ul class="DataList Discussions">
<?php
include $this->FetchViewLocation('discussions', 'discussions');
?>
</ul>
<?php
if ($this->DiscussionData->NumRows() == $this->DiscussionsPerCategory) {
?>
<div class="More"><?php
echo Anchor('More Discussions', '/categories/' . urlencode($this->Category->Name));
?>
</div>
<?php