diff --git a/src/controllers/Controller.php b/src/controllers/Controller.php
index b979538e2..72b7ab400 100755
--- a/src/controllers/Controller.php
+++ b/src/controllers/Controller.php
@@ -320,7 +320,7 @@ abstract class Controller
{
$default_fields = ["c", "a", C\CSRF_TOKEN, "just_thread",
"just_group_id", "just_user_id", "group_id", "user_id", "role_id",
- "limit", "num"];
+ "limit", "num", "v"];
if ($copy_fields) {
$copy_fields = array_merge($default_fields, $copy_fields);
} else {
diff --git a/src/controllers/components/SocialComponent.php b/src/controllers/components/SocialComponent.php
index 384fd21e3..211faf893 100644
--- a/src/controllers/components/SocialComponent.php
+++ b/src/controllers/components/SocialComponent.php
@@ -1314,16 +1314,25 @@ class SocialComponent extends Component implements CrawlConstants
in_array($_REQUEST['arg'], $possible_arguments)) {
switch ($_REQUEST['arg']) {
case "addcomment":
+ if (!empty($_REQUEST['page_type']) &&
+ $_REQUEST['page_type'] == "page_and_feedback") {
+ $_REQUEST['a'] = "wiki";
+ unset($_REQUEST['just_thread']);
+ unset($_REQUEST['limit']);
+ unset($_REQUEST['num']);
+ }
if (!isset($_REQUEST['parent_id'])
|| !$_REQUEST['parent_id']
|| !isset($_REQUEST['group_id'])
|| !$_REQUEST['group_id']) {
return $parent->redirectWithMessage(
- tl('social_component_comment_error'));
+ tl('social_component_comment_error'),
+ ['page_name']);
}
if (!$description) {
return $parent->redirectWithMessage(
- tl('social_component_no_comment'));
+ tl('social_component_no_comment'),
+ ['page_name']);
}
$parent_id = $parent->clean($_REQUEST['parent_id'], "int");
$group_id = $parent->clean($_REQUEST['group_id'], "int");
@@ -1335,13 +1344,15 @@ class SocialComponent extends Component implements CrawlConstants
!in_array($group["MEMBER_ACCESS"], $read_comment) &&
$user_id != C\ROOT_ID)) {
return $parent->redirectWithMessage(
- tl('social_component_no_post_access'));
+ tl('social_component_no_post_access'),
+ ['page_name']);
}
if ($parent_id >= 0) {
$parent_item = $group_model->getGroupItem($parent_id);
if (!$parent_item) {
return $parent->redirectWithMessage(
- tl('social_component_no_post_access'));
+ tl('social_component_no_post_access'),
+ ['page_name']);
}
} else {
$parent_item = [
@@ -1400,7 +1411,7 @@ class SocialComponent extends Component implements CrawlConstants
$this->addAnyBotResponses($parent_item["ID"], $group_id,
$bots_called, $title, $post_parts);
return $parent->redirectWithMessage(
- tl('social_component_comment_added'));
+ tl('social_component_comment_added'), ['page_name']);
break;
case "addgroup":
$register =
@@ -1433,9 +1444,14 @@ class SocialComponent extends Component implements CrawlConstants
}
break;
case "deletepost":
+ if (!empty($_REQUEST['page_type']) &&
+ $_REQUEST['page_type'] == "page_and_feedback") {
+ $_REQUEST['a'] = "wiki";
+ }
if (!isset($_REQUEST['post_id'])) {
return $parent->redirectWithMessage(
- tl('social_component_delete_error'));
+ tl('social_component_delete_error'),
+ ['page_name']);
break;
}
$post_id = $parent->clean($_REQUEST['post_id'], "int");
@@ -1450,7 +1466,8 @@ class SocialComponent extends Component implements CrawlConstants
$user_id, -1);
if (!empty($_REQUEST['page_type']) &&
$_REQUEST['page_type'] == "page_and_feedback") {
- $_REQUEST['a'] = "wiki";
+ unset($_REQUEST['just_thread']);
+ $_REQUEST['group_id'] = $group_item['GROUP_ID'];
}
if ($success) {
$group_model->deleteResources($group_item["GROUP_ID"],
@@ -1459,10 +1476,12 @@ class SocialComponent extends Component implements CrawlConstants
unset($_REQUEST['just_thread']);
}
return $parent->redirectWithMessage(
- tl('social_component_item_deleted'));
+ tl('social_component_item_deleted'),
+ ['page_name']);
} else {
return $parent->redirectWithMessage(
- tl('social_component_no_item_deleted'));
+ tl('social_component_no_item_deleted'),
+ ['page_name']);
}
break;
case "downvote":
@@ -1576,19 +1595,28 @@ class SocialComponent extends Component implements CrawlConstants
$_REQUEST['feed_time'], "int");
break;
case "updatepost":
+ if (!empty($_REQUEST['page_type']) &&
+ $_REQUEST['page_type'] == "page_and_feedback") {
+ $_REQUEST['a'] = "wiki";
+ unset($_REQUEST['limit']);
+ unset($_REQUEST['num']);
+ }
if (!isset($_REQUEST['post_id'])) {
return $parent->redirectWithMessage(
- tl('social_component_comment_error'));
+ tl('social_component_comment_error'),
+ ['page_name']);
}
if (!$description || !$title) {
return $parent->redirectWithMessage(
- tl('social_component_need_title_description'));
+ tl('social_component_need_title_description'),
+ ['page_name']);
}
- $post_id =$parent->clean($_REQUEST['post_id'], "int");
+ $post_id = $parent->clean($_REQUEST['post_id'], "int");
$action = "updatepost" . $post_id;
if (!$parent->checkCSRFTime(C\CSRF_TOKEN, $action)) {
return $parent->redirectWithMessage(
- tl('social_component_post_edited_elsewhere'));
+ tl('social_component_post_edited_elsewhere'),
+ ['page_name']);
}
$items = $group_model->getGroupItems(0, 1,
[["post_id", "=", $post_id, ""]], $user_id);
@@ -1596,20 +1624,30 @@ class SocialComponent extends Component implements CrawlConstants
$item = $items[0];
} else {
return $parent->redirectWithMessage(
- tl('social_component_no_update_access'));
+ tl('social_component_no_update_access'),
+ ['page_name']);
}
$group_id = $item['GROUP_ID'];
+ $_REQUEST['group_id'] = $group_id;
$group = $group_model->getGroupById($group_id, $user_id,
true);
$update_thread = [C\GROUP_READ_WRITE, C\GROUP_READ_WIKI];
if ($post_id != $item['PARENT_ID'] && $post_id > 0) {
$update_thread[] = C\GROUP_READ_COMMENT;
+ $parent_items = $group_model->getGroupItems(0, 1,
+ [["post_id", "=", $item['PARENT_ID'], ""]],
+ $user_id);
+ if (!empty($parent_items[0])) {
+ $parent_item = $parent_items[0];
+ $title = "-- " . $parent_item['TITLE'];
+ }
}
if (!$group || ($group["OWNER_ID"] != $user_id &&
!in_array($group["MEMBER_ACCESS"], $update_thread) &&
$user_id != ROOT_ID)) {
return $parent->redirectWithMessage(
- tl('social_component_no_update_access'));
+ tl('social_component_no_update_access'),
+ ['page_name']);
break;
}
$group_model->updateGroupItem($post_id, $title,
@@ -1618,10 +1656,12 @@ class SocialComponent extends Component implements CrawlConstants
$group_id, "post" . $post_id);
if ($result == self::UPLOAD_FAILED) {
return $parent->redirectWithMessage(
- tl('social_component_upload_error'));
+ tl('social_component_upload_error'),
+ ['page_name']);
}
return $parent->redirectWithMessage(
- tl('social_component_post_updated'));
+ tl('social_component_post_updated'),
+ ['page_name']);
break;
case "upvote":
if (!isset($_REQUEST['group_id']) || !$_REQUEST['group_id']
@@ -2083,8 +2123,11 @@ class SocialComponent extends Component implements CrawlConstants
$for_group);
$updatable = false;
if (!empty($data["JUST_THREAD"]) && $data["JUST_THREAD"] >= 0) {
- if ($_SESSION['DISPLAY_MESSAGE'] ?? "" ==
- tl('social_component_comment_added')) {
+ $display_message = $_SESSION['DISPLAY_MESSAGE'] ?? "";
+ $is_wiki = !empty($data["HEAD"]['page_type']) &&
+ $data["HEAD"]['page_type'] == 'page_and_feedback';
+ if (!$is_wiki &&
+ $display_message == tl('social_component_comment_added')) {
$limit = floor($item_count / $results_per_page) *
$results_per_page;
}
@@ -2132,7 +2175,7 @@ class SocialComponent extends Component implements CrawlConstants
for ($i = 0; $i < $num_matches; $i++) {
$match = preg_quote($matches[0][$i], "@");
$match = str_replace("@","\@", $match);
- $replace = "<a href='?c=admin&a=mixCrawls".
+ $replace = "<a href='?c=admin&a=mixCrawls" .
"&arg=importmix&".C\CSRF_TOKEN."=".
$parent->generateCSRFToken($user_id).
"&timestamp={$matches[2][$i]}'>".
@@ -3079,12 +3122,16 @@ EOD;
$data['LIMIT'] = $limit;
$data['RESULTS_PER_PAGE'] = $results_per_page;
$data['PAGES'] = $pages;
- $data[C\CSRF_TOKEN] =
- $parent->generateCSRFToken($user_id);
+ $data[C\CSRF_TOKEN] = $parent->generateCSRFToken($user_id);
$data['PAGING_QUERY'] = htmlentities(B\wikiUrl($data['PAGE_NAME'],
true, $data['CONTROLLER'], $group_id)) .
C\CSRF_TOKEN . '='. $data[C\CSRF_TOKEN] .
"&page_type=page_and_feedback";
+ $data['WIKI_FEED_BASE'] = C\BASE_URL . "?c=". $data['CONTROLLER'] .
+ "&a=groupFeeds&just_thread=".$data['DISCUSS_THREAD'] .
+ "&". C\CSRF_TOKEN . '='. $data[C\CSRF_TOKEN] .
+ "&page_type=page_and_feedback&page_name=" .
+ $data['PAGE_NAME'];
if ($data['VIEW'] != 'api') {
$data['SCRIPT'] .= " let nextPage = initNextResultsPage(" .
"$limit, {$data['TOTAL_ROWS']}, $results_per_page, ".
diff --git a/src/views/elements/GroupfeedElement.php b/src/views/elements/GroupfeedElement.php
index ff65d1afe..70905f440 100644
--- a/src/views/elements/GroupfeedElement.php
+++ b/src/views/elements/GroupfeedElement.php
@@ -89,12 +89,14 @@ class GroupfeedElement extends Element implements CrawlConstants
if (isset($data['MODE']) && $data['MODE'] == 'grouped') {
$this->renderGroupedView($paging_query, $data);
} else {
+ $data['MODE'] = "ungrouped";
$this->renderUngroupedView($logged_in, $base_query,
$paging_query, $data);
}
- if (!$is_api && !$is_status) {?>
+ if (!$is_api && !$is_status) {
+ $thread_type = intval($data['JUST_THREAD'] ?? 0); ?>
</div><?php
- $this->renderScripts($data, ($data['JUST_THREAD'] ?? 0) > 0);
+ $this->renderScripts($data);
}
}
/**
@@ -194,6 +196,7 @@ class GroupfeedElement extends Element implements CrawlConstants
if ($is_group && in_array($member_access, $start_thread)) {
$this->drawStartThreadForm($data['JUST_GROUP_ID'], $data);
} else if ($is_page_with_comments) {
+ $data['page_type'] = 'page_and_feedback';
$this->drawCommentForm($parent_id, $group_id, $data);
}
}
@@ -206,13 +209,13 @@ class GroupfeedElement extends Element implements CrawlConstants
<div class="button-group-result red medium-font" ><?=
tl('groupfeed_element_no_posts_yet') ?></div>
<?php
- if ($is_thread) {
+ if ($is_thread && !$is_page_with_comments) {
$this->drawCommentForm($parent_id, $group_id, $data);
}
}
if (!$is_api && !$is_status) {?>
<div id='results-container' data-time="<?=time() ?>"><?php
- if ($data['LIMIT'] > 0) {
+ if ($data['LIMIT'] > 0 && !$is_page_with_comments) {
$this->view->helper("pagination")->singleButtonPagination(
$paging_query, $data['LIMIT'], $data['RESULTS_PER_PAGE'],
$data['TOTAL_ROWS'], false, $logged_in, true);
@@ -314,9 +317,11 @@ class GroupfeedElement extends Element implements CrawlConstants
</script><?php
}
}
+ $delete_url = (empty($data['WIKI_FEED_BASE'])) ?
+ $paging_query : $data['WIKI_FEED_BASE'];
?>
- [<a href="<?=$paging_query.'&arg=deletepost&'.
- "post_id=".$page['ID'] ?>" title="<?=
+ [<a href="<?= $delete_url .'&arg=deletepost&'.
+ "post_id=" . $page['ID'] ?>" title="<?=
tl('groupfeed_element_delete') ?>">X</a>]
</div><?php
}
@@ -452,7 +457,7 @@ class GroupfeedElement extends Element implements CrawlConstants
private function drawStartThreadForm($group_id, $data)
{
$just_fields = ["LIMIT" => "limit", "RESULTS_PER_PAGE" => "num",
- "JUST_GROUP_ID" => "just_group_id"];
+ "JUST_GROUP_ID" => "just_group_id", 'MODE' => 'v'];
$hidden_form = "\n";
foreach ($just_fields as $field => $form_field) {
if (isset($data[$field])) {
@@ -541,7 +546,9 @@ class GroupfeedElement extends Element implements CrawlConstants
private function drawCommentForm($thread_id, $group_id, $data)
{
$just_fields = ["LIMIT" => "limit", "RESULTS_PER_PAGE" => "num",
- "JUST_THREAD" => 'just_thread'];
+ "JUST_THREAD" => 'just_thread', 'page_type' => 'page_type',
+ "PAGE_NAME" => 'page_name', 'MODE' => 'v'
+ ];
$hidden_form = "\n";
foreach ($just_fields as $field => $form_field) {
if (isset($data[$field])) {
@@ -710,7 +717,8 @@ class GroupfeedElement extends Element implements CrawlConstants
}
$just_fields = ["LIMIT" => "limit", "RESULTS_PER_PAGE" => "num",
"JUST_THREAD" => 'just_thread', "JUST_USER_ID" => "just_user_id",
- "JUST_GROUP_ID" => "just_group_id"];
+ "JUST_GROUP_ID" => "just_group_id", 'page_type' => 'page_type',
+ "PAGE_NAME" => 'page_name', 'MODE' => 'v'];
$hidden_form = "\n";
foreach ($just_fields as $field => $form_field) {
if (isset($data[$field])) {
@@ -729,7 +737,9 @@ class GroupfeedElement extends Element implements CrawlConstants
$drag_above_text = tl('groupfeed_element_drag_textarea');
$click_link_text = tl('groupfeed_element_click_textarea');
?>
- let feed_update_id = null;
+ if (typeof feed_update_id === 'undefined') {
+ let feed_update_id = null;
+ }
function commentForm(id, parent_id, group_id)
{
tmp = '<div class="post<?= $clear ?>"></div>';
@@ -737,7 +747,8 @@ class GroupfeedElement extends Element implements CrawlConstants
if (start_elt != tmp) {
elt(id).innerHTML =
tmp +
- '<form method="post" >' + <?= $hidden_form ?>
+ '<form method="post" action="<?=C\SHORT_BASE_URL?>">' +
+ <?= $hidden_form ?>
'<input type="hidden" name="c" value="<?=
$data['CONTROLLER'] ?>" />' +
'<input type="hidden" name="a" value="groupFeeds" />' +
@@ -779,11 +790,18 @@ class GroupfeedElement extends Element implements CrawlConstants
}
function updatePostForm(id)
{
- clearInterval(feed_update_id);
+ if (typeof feed_update_id !== 'undefined' && feed_update_id) {
+ clearInterval(feed_update_id);
+ }
let title_elt = elt('title' + id);
let title = null;
+ let title_disabled = "";
+
if (title_elt) {
title = elt('title' + id).innerHTML;
+ if (title.substr(0, 2) == "--") {
+ title_disabled = "disabled='disabled'";
+ }
}
let description = elt('old-description'+id).innerHTML;
let tmp = '<div class="post<?= $clear ?>"></div>';
@@ -791,7 +809,8 @@ class GroupfeedElement extends Element implements CrawlConstants
if (start_elt != tmp) {
setDisplay('result-' + id, false);
tmp +=
- '<form method="post" >' + <?= $hidden_form ?>
+ '<form method="post" action="<?=C\SHORT_BASE_URL?>">' +
+ <?= $hidden_form ?>
'<input type="hidden" name="c" value="<?=
$data['CONTROLLER'] ?>" />' +
'<input type="hidden" name="a" value="groupFeeds" />' +
@@ -809,7 +828,7 @@ class GroupfeedElement extends Element implements CrawlConstants
?></label></b></p>' +
'<p <?= $hide_title
?>><input type="text" name="title" value="'+title+'" '+
- ' maxlength="<?= C\TITLE_LEN
+ ' ' + title_disabled + ' maxlength="<?= C\TITLE_LEN
?>" class="wide-field"/></p>';
} else {
let hidden_title = elt('hidden-title' + id);
@@ -894,6 +913,10 @@ class GroupfeedElement extends Element implements CrawlConstants
feed_update_time * sec);
setTimeout("clearUpdate()", 20 * minute + sec);
}<?php
+ } else {?>
+ function doUpdate()
+ {
+ }<?php
}?>
</script>
<?php