Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 42 additions & 24 deletions ReplyTo/class.replyto.plugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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 '<div class="ReplyViewOptions"><span class="MLabel">View:&nbsp</span>';
echo anchor('Flat', $discussionUrl.'?'.self::QUERY_PARAMETER_VIEW.'='.self::VIEW_FLAT, $viewMode == self::VIEW_FLAT?'Active':'').'&nbsp;&nbsp;|&nbsp;&nbsp;';
echo anchor('Threaded', $discussionUrl.'?'.self::QUERY_PARAMETER_VIEW.'='.self::VIEW_THREADED, $viewMode == self::VIEW_THREADED?'Active':'').'&nbsp;&nbsp;|&nbsp;&nbsp;';
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 '</div>';
}

Expand All @@ -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'));
}
}
Expand Down Expand Up @@ -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'];
Expand All @@ -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
Expand All @@ -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;
}
Expand Down Expand Up @@ -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 ) {
Expand All @@ -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 : '');
}

Expand Down Expand Up @@ -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(
Expand Down