หมวดไฟฟ้า/อิเล็กทรอนิกส์/คอมพิวเตอร์ => ห้อง SMF 2.0.X => Programming => ห้องคอมพิวเตอร์ => ห้อง MOD => ข้อความที่เริ่มโดย: Auto Man ที่ 07 ตุลาคม 2559, 11:25:20

หัวข้อ: Mod เพิ่มปุ่มจัดการกระทู้ปักหมุด
เริ่มหัวข้อโดย: Auto Man ที่ 07 ตุลาคม 2559, 11:25:20
Mod เพิ่มปุ่มจัดการกระทู้ปักหมุด

Mod Name:Order Stickied Topics

ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง  สมัครสมาชิก หรือ ลงชื่อเข้าระบบ
 (http://upic.me/show/62208449)

ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง  สมัครสมาชิก หรือ ลงชื่อเข้าระบบ


ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง  สมัครสมาชิก หรือ ลงชื่อเข้าระบบ


ดาวน์โหลดที่ลิ้งก์ด้านล่าง หรือที่ไฟล์แนบ (สมาชิก)

Download Linkhttp://custom.simplemachines.org/mods/index.php?mod=1321
เครดิต : http://pordoo.com/mod/t963/
หัวข้อ: Mod เพิ่มปุ่มจัดการกระทู้ปักหมุด
เริ่มหัวข้อโดย: Auto Man ที่ 07 ตุลาคม 2559, 11:29:22
เจอข้อผิดพลาดแฮะ...

ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง  สมัครสมาชิก หรือ ลงชื่อเข้าระบบ
 (http://upic.me/show/62208450)
หัวข้อ: Mod เพิ่มปุ่มจัดการกระทู้ปักหมุด
เริ่มหัวข้อโดย: Auto Man ที่ 07 ตุลาคม 2559, 11:30:55
File Edits
./index.php
Find: [Select]
      'pm' => array('PersonalMessage.php', 'MessageMain'),
Replace With: [Select]
      'pm' => array('PersonalMessage.php', 'MessageMain'),
      //   The action for the Order Stickied Topics Mod.
      'orderstickiedtopics' => array('Post.php', 'OrderStickiedTopics'),

./Sources/Post.php
Find: [Select]
      // So you wanna (un)sticky this...let's see.
      if (isset($_POST['sticky']) && (empty($modSettings['enableStickyTopics']) || $_POST['sticky'] == $topic_info['is_sticky'] || !allowedTo('make_sticky')))
         unset($_POST['sticky']);
Replace With: [Select]
      // So you wanna (un)sticky this...let's see.
      if (isset($_POST['sticky']) && (empty($modSettings['enableStickyTopics']) || (empty($_POST['sticky']) == empty($topic_info['is_sticky'])) || !allowedTo('make_sticky')))
         unset($_POST['sticky']);

Find: [Select]
      // Change the sticky status of this topic?
      if (isset($_POST['sticky']) && (!allowedTo('make_sticky') || $_POST['sticky'] == $topic_info['is_sticky']))
         unset($_POST['sticky']);
Replace With: [Select]
      // Change the sticky status of this topic?
      if (isset($_POST['sticky']) && (!allowedTo('make_sticky') || (empty($_POST['sticky']) == empty($topic_info['is_sticky']))))
         unset($_POST['sticky']);

Find: [Select]
   // Assume the first message if no message ID was given.
   $request = $smcFunc['db_query']('', '
         SELECT
            t.locked, t.num_replies, t.id_member_started, t.id_first_msg,
Replace With: [Select]
   // Assume the first message if no message ID was given.
   $request = $smcFunc['db_query']('', '
         SELECT
            t.locked, t.num_replies, t.id_member_started, t.id_first_msg, t.is_sticky,

Find: [Select]
         'board' => $board,
         'lock_mode' => isset($_POST['lock']) ? (int) $_POST['lock'] : null,
         'sticky_mode' => isset($_POST['sticky']) && !empty($modSettings['enableStickyTopics']) ? (int) $_POST['sticky'] : null,
Replace With: [Select]
         'board' => $board,
         'lock_mode' => isset($_POST['lock']) ? (int) $_POST['lock'] : null,
         'sticky_mode' => isset($_POST['sticky']) && !empty($modSettings['enableStickyTopics']) && !(empty($_POST['sticky']) == empty($row['is_sticky'])) ? (int) $_POST['sticky'] : null,

Find (at the end of the file): [Select]
?>
Add Before: [Select]

//   Function for the Order Stickied Topics Action.
function OrderStickiedTopics()
{
   global $board, $smcFunc, $board_info, $modSettings, $context, $txt, $topic;
   
   //   Make sure that we have a valid board.
   if(empty($board))
      redirectexit();
   
   //   Make sure that the user is allowed to sticky topics. And that we are using stickied topics.
   if(!allowedTo('make_sticky') || empty($modSettings['enableStickyTopics']))
      redirectexit('board='.$board.'.0');
   
   //   Do we have a topic id?
   if(!empty($topic))
   {
      //   First get some information about this topic.
      $result = $smcFunc['db_query']('', '
         SELECT is_sticky
         FROM {db_prefix}topics
         WHERE id_topic = {int:topic_id}
            AND id_board = {int:board_id}',
         array(
            'board_id' => $board,
            'topic_id' => $topic,
         )
      );
      
      //   Make sure that we got some valid topic information.
      if(!($data = $smcFunc['db_fetch_assoc']($result)))
         redirectexit('action=orderstickiedtopics;board='.$board.'.0');

      $smcFunc['db_free_result']($result);
      
      //   Make sure that we aren't about to unsticky this topic, and that its a sticky.
      if(($data['is_sticky'] == 0)
      || (($data['is_sticky'] == 1) && isset($_GET['decrease'])))
         redirectexit('action=orderstickiedtopics;board='.$board.'.0;');
      
      //   Get a correct value to set for the 'stickyness' of this topic. :D
      if(isset($_GET['unsticky']))
         $value = '0';
      //   Increment?
      elseif(isset($_GET['increment']))
         $value = "is_sticky + 1";
      //   Decrease?
      elseif(isset($_GET['decrease']))
         $value = "is_sticky - 1";
      //   If we have no valid value, then we can't do anything. :(
      else
         redirectexit('action=orderstickiedtopics;board='.$board.'.0');
      
      //   Update the topic.
      $smcFunc['db_query']('','
         UPDATE {db_prefix}topics
            SET is_sticky = {raw:value}
         WHERE id_topic = {int:topic_id}',
         array(
            'topic_id'   => $topic,
            'value'   => $value,
         )
      );
      
      //   Finally redirect us back to the order stickied topics page for this topics board.
      redirectexit('action=orderstickiedtopics;board='.$board.'.0;');
   }
   
   //   Get a list of Stickied Topics for this board.
   $result = $smcFunc['db_query']('','
      SELECT t.id_topic, t.is_sticky, m.subject
      FROM ({db_prefix}topics as t)
         LEFT JOIN {db_prefix}messages as m on (m.id_msg = t.id_first_msg)
      WHERE is_sticky != 0
         AND t.id_board = {int:board_id}
      ORDER BY t.is_sticky DESC, t.id_last_msg DESC',
      array(
         'board_id' => $board,
      )
   );
   
   //   Setup the topic list for the template.
   $context['topics'] = array();
   while ($row = $smcFunc['db_fetch_assoc']($result))
   {
      $context['topics'][] = array(
         'id' => $row['id_topic'],
         'value' => $row['is_sticky'],
         'title' => $row['subject'],
      );
   }
   $smcFunc['db_free_result']($result);
   
   //   Finally set up some necessary *stuff* for the template.
   loadTemplate('Post');
   $context['sub_template'] = 'orderstickiedtopics';
   $context['page_title'] = $board_info['name'];
}

./Sources/MessageIndex.php
Find: [Select]
   $context['can_post_poll'] = $modSettings['pollMode'] == '1' && allowedTo('poll_post');
Replace With: [Select]
   $context['can_post_poll'] = $modSettings['pollMode'] == '1' && allowedTo('poll_post');
   //   Add the 'can_order_stickied_topics' permission, for the Order Stickied Topics mod.
   $context['can_order_stickied_topics'] = allowedTo('make_sticky') && !empty($modSettings['enableStickyTopics']);

./Themes/default/MessageIndex.template.php
Find: [Select]
      'post_poll' => array('test' => 'can_post_poll', 'text' => 'new_poll', 'image' => 'new_poll.gif', 'lang' => true, 'url' => $scripturl . '?action=post;board=' . $context['current_board'] . '.0;poll'),
Replace With: [Select]
      'post_poll' => array('test' => 'can_post_poll', 'text' => 'new_poll', 'image' => 'new_poll.gif', 'lang' => true, 'url' => $scripturl . '?action=post;board=' . $context['current_board'] . '.0;poll'),
      //   Show the Link/Button for the Order Stickied Topics Mod.
      'order_stickied_topics' => array('test' => 'can_order_stickied_topics', 'text' => 'OrderStickiedTopics_title', 'lang' => true, 'url' => $scripturl . '?action=orderstickiedtopics;board=' . $context['current_board'] . '.0'),

./Themes/default/Post.template.php
Find (at the end of the file): [Select]
?>
Add Before: [Select]

//   Function to display the list of stickiedtopics.
function template_orderstickiedtopics()
{
   global $context, $txt, $board_info, $scripturl, $settings;
      
   //   Show the start of the table, as well as the main heading and the column headings.
   echo '
      

      <table border="0" align="center" cellspacing="1" cellpadding="4" class="bordercolor" width="60%">
         <tr class="catbg3">
            <td colspan="5" align="left">
               <div style="float: left;">
                  ', $txt['OrderStickiedTopics_title'] ,' - <a href="' . $scripturl . '?board=', $context['current_board'], '.0">', $board_info['name'], '[/url]
               </div>
            </td>
         </tr>
         <tr class="titlebg">
            <th>', $txt['subject'], '</th>
            <th>', $txt['OrderStickiedTopics_current'], '</th>
            <th>', $txt['OrderStickiedTopics_modify'], '</th>
         </tr>';
   
   //   Show a list of the topics.
   foreach($context['topics'] as $topic)
   {
      echo '
         <tr>
            <td align="left" valign="top" class="windowbg"><a href="', $scripturl, '?topic=', $topic['id'], '.0">', $topic['title'], '[/url]</td>
            <td align="left" valign="top" class="windowbg2" style="text-align:center;">', $topic['value'], '</td>
            <td align="center" valign="top" class="windowbg2">
               <a href="', $scripturl, '?action=orderstickiedtopics;topic=', $topic['id'],';decrease"><img src="', $settings['images_url'], '/sort_down.gif" alt="', $txt['OrderStickiedTopics_decrease'], '" border="0" />[/url]
               <a href="', $scripturl, '?action=orderstickiedtopics;topic=', $topic['id'],';increment"><img src="', $settings['images_url'], '/sort_up.gif" alt="', $txt['OrderStickiedTopics_increase'], '" border="0" />[/url]
               &nbsp;&nbsp;&nbsp;<a href="', $scripturl, '?action=orderstickiedtopics;topic=', $topic['id'],';unsticky">', $txt['OrderStickiedTopics_unsticky'], '[/url]
            </td>
         </tr>';
   }
   
   //   If we have no topics, then show a short message telling the moderator.
   if(empty($context['topics']))
      echo '
         <tr>
            <td colspan="3" valign="top" class="windowbg">', $txt['OrderStickiedTopics_emptylist'], '</td>
         </tr>';
      
   //   Finish the table.
   echo '
         <tr class="catbg3">
            <td colspan="5" align="left">
            <b style="font-size:14px;"><a href="', $scripturl, '?board=', $context['current_board'], '.0">', $txt['OrderStickiedTopics_back'], ' ', $board_info['name'], '[/url]
            </td>
         </tr>
      </table>';
}

./Themes/default/languages/Modifications.english.php
Find (at the end of the file): [Select]
?>
Add Before: [Select]

// Text for the Order Stickied Topics Mod.
$txt['OrderStickiedTopics_title'] = 'Order Stickied Topics';
$txt['OrderStickiedTopics_current'] = 'Current \'Sticky\' Value';
$txt['OrderStickiedTopics_back'] = 'Back To';
$txt['OrderStickiedTopics_modify'] = 'Modify Sticky Value';
$txt['OrderStickiedTopics_unsticky'] = 'Un-Sticky';
$txt['OrderStickiedTopics_increase'] = 'Increase';
$txt['OrderStickiedTopics_decrease'] = 'Decrease';
$txt['OrderStickiedTopics_emptylist'] = 'This board currently has no stickied topics.';

./Themes/default/languages/Modifications.english-utf8.php
Find (at the end of the file):

โค๊ด: [Select]
?>

Add Before:

โค๊ด: [Select]
// Text for the Order Stickied Topics Mod.
$txt['OrderStickiedTopics_title'] = 'Order Stickied Topics';
$txt['OrderStickiedTopics_current'] = 'Current \'Sticky\' Value';
$txt['OrderStickiedTopics_back'] = 'Back To';
$txt['OrderStickiedTopics_modify'] = 'Modify Sticky Value';
$txt['OrderStickiedTopics_unsticky'] = 'Un-Sticky';
$txt['OrderStickiedTopics_increase'] = 'Increase';
$txt['OrderStickiedTopics_decrease'] = 'Decrease';
$txt['OrderStickiedTopics_emptylist'] = 'This board currently has no stickied topics.';

This operation isn't vital to the installation of this mod.