Добавление опции одобрения запроса на членство в группе с указанием причины.

Автор digger®, 15 февраля 2018, 01:15:56

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

digger®

Index: Themes/default/languages/EmailTemplates.english.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- Themes/default/languages/EmailTemplates.english.php (date 1518644159171)
+++ Themes/default/languages/EmailTemplates.english.php (date 1518644159171)
@@ -70,6 +70,23 @@
 
 {REGARDS}',
  ),
+    'mc_group_approve_reason' => array(
+        /*
+            @additional_params: mc_group_approve
+                USERNAME: The user name for the member receiving the email.
+                GROUPNAME: The name of the membergroup that the user was accepted into.
+ REASON: Reason for the approve.
+            @description: The request to join a particular membergroup has been accepted.
+        */
+        'subject' => 'Group Membership Approval',
+        'body' => '{USERNAME},
+
+We\'re pleased to notify you that your application to join the "{GROUPNAME}" group at {FORUMNAME} has been accepted, and your account has been updated to include this new membergroup.
+
+This is due to the following reason: {REASON}
+
+{REGARDS}',
+    ),
  'mc_group_reject' => array(
  /*
  @additional_params: mc_group_reject
@@ -1062,4 +1079,4 @@
  'author' => '<a href="http://www.simplemachines.org/community/?action=profile;u=63186">karlbenson</a>',
  ),
 );

Index: Themes/default/languages/ModerationCenter.english.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- Themes/default/languages/ModerationCenter.english.php (date 1518625664986)
+++ Themes/default/languages/ModerationCenter.english.php (date 1518625664986)
@@ -57,6 +57,9 @@
 $txt['mc_groups_reason_title'] = 'Reasons for Rejection';
 $txt['with_selected'] = 'With Selected';
 $txt['mc_groupr_approve'] = 'Approve Request';
+$txt['mc_groupr_approve_reason_desc'] = 'Reason to approve %1$s\'s request to join &quot;%2$s&quot;';
+$txt['mc_groupr_approve_reason_title'] = 'Reason for Approve';
+$txt['mc_groupr_approve_w_reason'] = 'Approve Request with Reason';
 $txt['mc_groupr_reject'] = 'Reject Request (No Reason)';
 $txt['mc_groupr_reject_w_reason'] = 'Reject Request with Reason';
 // Do not use numeric entries in the below string.
@@ -142,4 +145,4 @@
 $txt['mc_click_add_note'] = 'Add a new note';
 $txt['mc_add_note'] = 'Add';
 
Index: Themes/default/languages/EmailTemplates.russian-utf8.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- Themes/default/languages/EmailTemplates.russian-utf8.php (date 1518644056817)
+++ Themes/default/languages/EmailTemplates.russian-utf8.php (date 1518644056817)
@@ -68,6 +68,23 @@
 
 {REGARDS}',
  ),
+    'mc_group_approve_reason' => array(
+        /*
+            @additional_params: mc_group_approve
+                USERNAME: The user name for the member receiving the email.
+                GROUPNAME: The name of the membergroup that the user was accepted into.
+ REASON: Reason for the approve.
+            @description: The request to join a particular membergroup has been accepted.
+        */
+        'subject' => 'Запрос на вступление в группу',
+        'body' => '{USERNAME},
+
+Ваш запрос на вступление в группу "{GROUPNAME}" на форуме {FORUMNAME} одобрен. Ваша учётная запись обновлена.
+
+Это произошло по следующей причине: {REASON}
+
+{REGARDS}',
+    ),
  'mc_group_reject' => array(
  /*
  @additional_params: mc_group_reject
@@ -1057,4 +1074,4 @@
  ),
 );
 
Index: Themes/default/languages/ModerationCenter.russian-utf8.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- Themes/default/languages/ModerationCenter.russian-utf8.php (date 1518625047954)
+++ Themes/default/languages/ModerationCenter.russian-utf8.php (date 1518625047954)
@@ -58,6 +58,9 @@
 $txt['mc_groups_reason_title'] = 'Причина отклонения';
 $txt['with_selected'] = 'С выделенными';
 $txt['mc_groupr_approve'] = 'Одобрить запрос';
+$txt['mc_groupr_approve_reason_desc'] = 'Причина одобрения запроса %1$s на присоединение к &quot;%2$s&quot;';
+$txt['mc_groups_approve_reason_title'] = 'Причина одобрения';
+$txt['mc_groupr_approve_w_reason'] = 'Одобрить запрос, указав причину';
 $txt['mc_groupr_reject'] = 'Отклонить запрос (без указания причины)';
 $txt['mc_groupr_reject_w_reason'] = 'Отклонить запрос, указав причину';
 // Do not use numeric entries in the below string.
@@ -143,4 +146,4 @@
 $txt['mc_click_add_note'] = 'Добавить новое примечание';
 $txt['mc_add_note'] = 'Добавить';
 
Index: Themes/default/ManageMembergroups.template.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- Themes/default/ManageMembergroups.template.php (date 1518625991259)
+++ Themes/default/ManageMembergroups.template.php (date 1518625991259)
@@ -574,10 +574,10 @@
  </dl>
  <input type="submit" name="go" value="', $txt['mc_groupr_submit'], '" class="button_submit" />
  <input type="hidden" name="req_action" value="got_reason" />
@@ -612,4 +612,45 @@
  <br class="clear" />';
 }
 
+// Allow the moderator to enter a reason to each user being approved.
+function template_group_request_approve_reason()
+{
+    global $context, $txt, $scripturl;
+
+    // Show a welcome message to the user.
+    echo '
+ <div id="moderationcenter">
+ <form action="', $scripturl, '?action=groups;sa=requests" method="post" accept-charset="', $context['character_set'], '">
+ <div class="cat_bar">
+ <h3 class="catbg">', $txt['mc_groups_approve_reason_title'], '</h3>
+ </div>
+ <div class="windowbg">
+ <span class="topslice"><span></span></span>
+ <div class="content">
+ <dl class="settings">';
+
+    // Loop through and print out a reason box for each...
+    foreach ($context['group_requests'] as $request)
+        echo '
+ <dt>
+ <strong>', sprintf($txt['mc_groupr_approve_reason_desc'], $request['member_link'], $request['group_link']), ':</strong>
+ </dt>
+ <dd>
+ <input type="hidden" name="groupr[]" value="', $request['id'], '" />
+ <textarea name="groupreason[', $request['id'], ']" rows="3" cols="40" style="' . ($context['browser']['is_ie8'] ? 'width: 635px; max-width: 96%; min-width: 96%' : 'width: 96%') . ';"></textarea>
+ </dd>';
+
+    echo '
+ </dl>
+ <input type="submit" name="go" value="', $txt['mc_groupr_submit'], '" class="button_submit" />
+ <input type="hidden" name="req_action" value="got_approve_reason" />
+ <input type="hidden" name="', $context['session_var'], '" value="', $context['session_id'], '" />
+ </div>
+ <span class="botslice"><span></span></span>
+ </div>
+ </form>
+ </div>
+ <br class="clear" />';
+}
+


Index: Sources/Groups.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- Sources/Groups.php (date 1518644764293)
+++ Sources/Groups.php (date 1518644764293)
@@ -647,10 +647,11 @@
  $_POST['groupr'][$k] = (int) $request;
 
  // If we are giving a reason (And why shouldn't we?), then we don't actually do much.
- if ($_POST['req_action'] == 'reason')
+ if ($_POST['req_action'] == 'reason' || $_POST['req_action'] == 'approve_reason')
  {
  // Different sub template...
- $context['sub_template'] = 'group_request_reason';
+            if ($_POST['req_action'] == 'reason') $context['sub_template'] = 'group_request_reason';
+                else $context['sub_template'] = 'group_request_approve_reason';
  // And a limitation. We don't care that the page number bit makes no sense, as we don't need it!
  $where .= ' AND lgr.id_request IN ({array_int:request_ids})';
  $where_parameters['request_ids'] = $_POST['groupr'];
@@ -744,7 +745,7 @@
  require_once($sourcedir . '/Subs-Post.php');
 
  // They are being approved?
- if ($_POST['req_action'] == 'approve')
+ if ($_POST['req_action'] == 'approve' || $_POST['req_action'] == 'got_approve_reason')
  {
  // Make the group changes.
  foreach ($group_changes as $id => $groups)
@@ -769,12 +770,17 @@
  $lastLng = $user_info['language'];
  foreach ($email_details as $email)
  {
+                        $custom_reason = isset($_POST['groupreason']) && isset($_POST['groupreason'][$email['rid']]) ? $_POST['groupreason'][$email['rid']] : '';
+
  $replacements = array(
  'USERNAME' => $email['member_name'],
  'GROUPNAME' => $email['group_name'],
  );
 
- $emaildata = loadEmailTemplate('mc_group_approve', $replacements, $email['language']);
+                        if (!empty($custom_reason))
+                            $replacements['REASON'] = $custom_reason;
+
+                        $emaildata = loadEmailTemplate(empty($custom_reason) ? 'mc_group_approve' : 'mc_group_approve_reason', $replacements, $email['language']);
 
  sendmail($email['email'], $emaildata['subject'], $emaildata['body'], null, null, false, 2);
  }
@@ -895,14 +901,15 @@
  array(
  'position' => 'bottom_of_list',
  'value' => '
- <select name="req_action" onchange="if (this.value != 0 &amp;&amp; (this.value == \'reason\' || confirm(\'' . $txt['mc_groupr_warning'] . '\'))) this.form.submit();">
+ <select name="req_action" onchange="if (this.value != 0 &amp;&amp; (this.value == \'reason\' || this.value == \'approve_reason\' || confirm(\'' . $txt['mc_groupr_warning'] . '\'))) this.form.submit();">
  <option value="0">' . $txt['with_selected'] . ':</option>
  <option value="0">---------------------</option>
  <option value="approve">' . $txt['mc_groupr_approve'] . '</option>
+ <option value="approve_reason">' . $txt['mc_groupr_approve_w_reason'] . '</option>
  <option value="reject">' . $txt['mc_groupr_reject'] . '</option>
  <option value="reason">' . $txt['mc_groupr_reject_w_reason'] . '</option>
  </select>
- <input type="submit" name="go" value="' . $txt['go'] . '" onclick="var sel = document.getElementById(\'req_action\'); if (sel.value != 0 &amp;&amp; sel.value != \'reason\' &amp;&amp; !confirm(\'' . $txt['mc_groupr_warning'] . '\')) return false;" class="button_submit" />',
+ <input type="submit" name="go" value="' . $txt['go'] . '" onclick="var sel = document.getElementById(\'req_action\'); if (sel.value != 0 &amp;&amp; sel.value != \'reason\' &amp;&amp; sel.value != \'approve_reason\' &amp;&amp; !confirm(\'' . $txt['mc_groupr_warning'] . '\')) return false;" class="button_submit" />',
  'align' => 'right',
  ),
  ),
@@ -964,4 +971,4 @@
  return $group_requests;
 }