diff --git a/ReplyTo/class.replyto.plugin.php b/ReplyTo/class.replyto.plugin.php index fd402a3..530fafb 100644 --- a/ReplyTo/class.replyto.plugin.php +++ b/ReplyTo/class.replyto.plugin.php @@ -9,7 +9,6 @@ class ReplyToPlugin extends Gdn_Plugin { const QUERY_PARAMETER_VIEW='view'; const VIEW_FLAT = 'flat'; - const VIEW_TREE = 'tree'; const VIEW_THREADED = 'threaded'; private $replyToModel; @@ -83,12 +82,11 @@ public function base_Replies_handler($sender, $args){ } $discussionUrl = discussionUrl($discussion, '', '/'); - $viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW, self::VIEW_FLAT); + $viewMode = self::getViewMode(); echo '
View: '; - echo anchor('Flat', $discussionUrl.'?'.self::QUERY_PARAMETER_VIEW.'='.self::VIEW_FLAT, $viewMode == self::VIEW_FLAT?'Active':'').'  |  '; echo anchor('Threaded', $discussionUrl.'?'.self::QUERY_PARAMETER_VIEW.'='.self::VIEW_THREADED, $viewMode == self::VIEW_THREADED?'Active':'').'  |  '; - echo anchor('Tree', $discussionUrl.'?'.self::QUERY_PARAMETER_VIEW.'='.self::VIEW_TREE, $viewMode == self::VIEW_TREE?'Active':''); + echo anchor('Flat', $discussionUrl.'?'.self::QUERY_PARAMETER_VIEW.'='.self::VIEW_FLAT, $viewMode == self::VIEW_FLAT?'Active':''); echo '
'; } @@ -98,9 +96,9 @@ public function base_Replies_handler($sender, $args){ * @param $sender */ public function commentModel_afterConstruct_handler(&$sender) { - self::log('commentModel_afterConstruct_handler', ['path'=> Gdn::request()->pathAndQuery()]); - $viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW, self::VIEW_FLAT); - if($viewMode == self::VIEW_TREE || $viewMode == self::VIEW_THREADED) { + $viewMode = self::getViewMode(); + + if($viewMode == self::VIEW_THREADED) { $sender->orderBy(array('TreeLeft asc', 'DateInserted asc')); } } @@ -138,10 +136,8 @@ public function discussionController_BeforeCalculatingOffsetLimit_handler($sende if (!Gdn::session()->isValid()) { return; } - $viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW); - if(!$viewMode) { - return; - } + $viewMode = self::getViewMode(); + // $offsetProvided = $args['OffsetProvided']; $discussion = $args['Discussion']; $offset = & $args['Offset']; $limit = & $args['Limit']; @@ -152,7 +148,6 @@ public function discussionController_BeforeCalculatingOffsetLimit_handler($sende } if($viewMode === self::VIEW_FLAT) { - $offset = 0; $enableAutoOffset = false; } else { // Show all comment on one offset for Tree/Threaded View @@ -176,7 +171,7 @@ public function discussionController_beforeDiscussionRender_handler($sender, $ar return; } - $viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW, self::VIEW_FLAT); + $viewMode = self::getViewMode(); if($viewMode == self::VIEW_FLAT) { return; } @@ -221,7 +216,7 @@ public function base_commentOptions_handler($sender, $args) { 'Class' => 'ReplyComment' ]; - $viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW, self::VIEW_FLAT); + $viewMode = self::getViewMode(); foreach ($options as $key => $value) { $currentUrl = $options[$key]['Url']; if (strpos($currentUrl, '?') !== false ) { @@ -242,20 +237,30 @@ public function base_commentOptions_handler($sender, $args) { * @param $args */ public function base_beforeCommentDisplay_handler($sender, $args) { - ReplyToPlugin::log('base_beforeCommentDisplay_handler', []); - - $viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW, self::VIEW_FLAT); - if($viewMode == self::VIEW_FLAT) { - return; - } if($sender->deliveryType() != DELIVERY_TYPE_ALL) { - ReplyToPlugin::log('base_beforeCommentDisplay_handler', ['']); - $this->buildCommentReplyToCssClasses($sender); + if(isset($_SERVER['HTTP_REFERER'])) { + $previous = $_SERVER['HTTP_REFERER']; + $query = parse_url($previous, PHP_URL_QUERY); + parse_str($query, $params); + $viewMode = $params['view']; + if(!$viewMode) { + $viewMode = self::isPagingUrl($previous) ? self::VIEW_FLAT : self::VIEW_THREADED; + } + + if($viewMode == self::VIEW_THREADED) { + $this->buildCommentReplyToCssClasses($sender); + } + } + } else { + $viewMode = self::getViewMode(); + if($viewMode == self::VIEW_THREADED) { + $this->buildCommentReplyToCssClasses($sender); + } } $comment = &$args['Comment']; $cssClass = &$args['CssClass']; - $displayBody = &$args['DisplayBody']; - $displayBody = $viewMode == self::VIEW_FLAT || $viewMode == self::VIEW_THREADED; + // $displayBody = &$args['DisplayBody']; + // $displayBody = $viewMode == self::VIEW_FLAT || $viewMode == self::VIEW_THREADED; $cssClass .= (!empty($comment->ReplyToClass)? ' ' . $comment->ReplyToClass : ''); } @@ -330,6 +335,19 @@ private function buildCommentReplyToCssClasses(&$sender){ } } + private static function isPagingUrl($url) { + return preg_match('/\/p\d+$/', $url); + } + + private static function getViewMode(){ + $viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW); + if(!$viewMode) { + $viewMode = self::isPagingUrl(Gdn::request()->path())? self::VIEW_FLAT: self::VIEW_THREADED; + } + + return $viewMode; + } + public static function log($message, $data) { if (c('Debug')) { Logger::event(