Skip to content

Issues-395: treaded view is used by default, removed tree view option #69

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 25, 2021
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