Skip to content

Commit fad4ce9

Browse files
committed
Issues-395: treaded view is used by default, removed tree view option
1 parent 76c35a7 commit fad4ce9

File tree

1 file changed

+42
-24
lines changed

1 file changed

+42
-24
lines changed

ReplyTo/class.replyto.plugin.php

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ class ReplyToPlugin extends Gdn_Plugin {
99

1010
const QUERY_PARAMETER_VIEW='view';
1111
const VIEW_FLAT = 'flat';
12-
const VIEW_TREE = 'tree';
1312
const VIEW_THREADED = 'threaded';
1413

1514
private $replyToModel;
@@ -83,12 +82,11 @@ public function base_Replies_handler($sender, $args){
8382
}
8483

8584
$discussionUrl = discussionUrl($discussion, '', '/');
86-
$viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW, self::VIEW_FLAT);
85+
$viewMode = self::getViewMode();
8786

8887
echo '<div class="ReplyViewOptions"><span class="MLabel">View:&nbsp</span>';
89-
echo anchor('Flat', $discussionUrl.'?'.self::QUERY_PARAMETER_VIEW.'='.self::VIEW_FLAT, $viewMode == self::VIEW_FLAT?'Active':'').'&nbsp;&nbsp;|&nbsp;&nbsp;';
9088
echo anchor('Threaded', $discussionUrl.'?'.self::QUERY_PARAMETER_VIEW.'='.self::VIEW_THREADED, $viewMode == self::VIEW_THREADED?'Active':'').'&nbsp;&nbsp;|&nbsp;&nbsp;';
91-
echo anchor('Tree', $discussionUrl.'?'.self::QUERY_PARAMETER_VIEW.'='.self::VIEW_TREE, $viewMode == self::VIEW_TREE?'Active':'');
89+
echo anchor('Flat', $discussionUrl.'?'.self::QUERY_PARAMETER_VIEW.'='.self::VIEW_FLAT, $viewMode == self::VIEW_FLAT?'Active':'');
9290
echo '</div>';
9391
}
9492

@@ -98,9 +96,9 @@ public function base_Replies_handler($sender, $args){
9896
* @param $sender
9997
*/
10098
public function commentModel_afterConstruct_handler(&$sender) {
101-
self::log('commentModel_afterConstruct_handler', ['path'=> Gdn::request()->pathAndQuery()]);
102-
$viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW, self::VIEW_FLAT);
103-
if($viewMode == self::VIEW_TREE || $viewMode == self::VIEW_THREADED) {
99+
$viewMode = self::getViewMode();
100+
101+
if($viewMode == self::VIEW_THREADED) {
104102
$sender->orderBy(array('TreeLeft asc', 'DateInserted asc'));
105103
}
106104
}
@@ -138,10 +136,8 @@ public function discussionController_BeforeCalculatingOffsetLimit_handler($sende
138136
if (!Gdn::session()->isValid()) {
139137
return;
140138
}
141-
$viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW);
142-
if(!$viewMode) {
143-
return;
144-
}
139+
$viewMode = self::getViewMode();
140+
// $offsetProvided = $args['OffsetProvided'];
145141
$discussion = $args['Discussion'];
146142
$offset = & $args['Offset'];
147143
$limit = & $args['Limit'];
@@ -152,7 +148,6 @@ public function discussionController_BeforeCalculatingOffsetLimit_handler($sende
152148
}
153149

154150
if($viewMode === self::VIEW_FLAT) {
155-
$offset = 0;
156151
$enableAutoOffset = false;
157152
} else {
158153
// Show all comment on one offset for Tree/Threaded View
@@ -176,7 +171,7 @@ public function discussionController_beforeDiscussionRender_handler($sender, $ar
176171
return;
177172
}
178173

179-
$viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW, self::VIEW_FLAT);
174+
$viewMode = self::getViewMode();
180175
if($viewMode == self::VIEW_FLAT) {
181176
return;
182177
}
@@ -221,7 +216,7 @@ public function base_commentOptions_handler($sender, $args) {
221216
'Class' => 'ReplyComment'
222217
];
223218

224-
$viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW, self::VIEW_FLAT);
219+
$viewMode = self::getViewMode();
225220
foreach ($options as $key => $value) {
226221
$currentUrl = $options[$key]['Url'];
227222
if (strpos($currentUrl, '?') !== false ) {
@@ -242,20 +237,30 @@ public function base_commentOptions_handler($sender, $args) {
242237
* @param $args
243238
*/
244239
public function base_beforeCommentDisplay_handler($sender, $args) {
245-
ReplyToPlugin::log('base_beforeCommentDisplay_handler', []);
246-
247-
$viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW, self::VIEW_FLAT);
248-
if($viewMode == self::VIEW_FLAT) {
249-
return;
250-
}
251240
if($sender->deliveryType() != DELIVERY_TYPE_ALL) {
252-
ReplyToPlugin::log('base_beforeCommentDisplay_handler', ['']);
253-
$this->buildCommentReplyToCssClasses($sender);
241+
if(isset($_SERVER['HTTP_REFERER'])) {
242+
$previous = $_SERVER['HTTP_REFERER'];
243+
$query = parse_url($previous, PHP_URL_QUERY);
244+
parse_str($query, $params);
245+
$viewMode = $params['view'];
246+
if(!$viewMode) {
247+
$viewMode = self::isPagingUrl($previous) ? self::VIEW_FLAT : self::VIEW_THREADED;
248+
}
249+
250+
if($viewMode == self::VIEW_THREADED) {
251+
$this->buildCommentReplyToCssClasses($sender);
252+
}
253+
}
254+
} else {
255+
$viewMode = self::getViewMode();
256+
if($viewMode == self::VIEW_THREADED) {
257+
$this->buildCommentReplyToCssClasses($sender);
258+
}
254259
}
255260
$comment = &$args['Comment'];
256261
$cssClass = &$args['CssClass'];
257-
$displayBody = &$args['DisplayBody'];
258-
$displayBody = $viewMode == self::VIEW_FLAT || $viewMode == self::VIEW_THREADED;
262+
// $displayBody = &$args['DisplayBody'];
263+
// $displayBody = $viewMode == self::VIEW_FLAT || $viewMode == self::VIEW_THREADED;
259264
$cssClass .= (!empty($comment->ReplyToClass)? ' ' . $comment->ReplyToClass : '');
260265
}
261266

@@ -330,6 +335,19 @@ private function buildCommentReplyToCssClasses(&$sender){
330335
}
331336
}
332337

338+
private static function isPagingUrl($url) {
339+
return preg_match('/\/p\d+$/', $url);
340+
}
341+
342+
private static function getViewMode(){
343+
$viewMode = getIncomingValue(self::QUERY_PARAMETER_VIEW);
344+
if(!$viewMode) {
345+
$viewMode = self::isPagingUrl(Gdn::request()->path())? self::VIEW_FLAT: self::VIEW_THREADED;
346+
}
347+
348+
return $viewMode;
349+
}
350+
333351
public static function log($message, $data) {
334352
if (c('Debug')) {
335353
Logger::event(

0 commit comments

Comments
 (0)