', $txt['report_sent'], ' '; } // Show the anchor for the top and for the first message. If the first message is new, say so. echo ' ', $context['first_new_message'] ? '' : ''; // Is this topic also a poll? if ($context['is_poll']) { echo '

', $txt['poll'], '

', $context['poll']['question'], '

'; // Are they not allowed to vote but allowed to view the options? if ($context['poll']['show_results'] || !$context['allow_vote']) { echo '
'; // Show each option with its corresponding percentage bar. foreach ($context['poll']['options'] as $option) { echo '
', $option['option'], '
'; if ($context['allow_poll_view']) echo ' ', $option['bar_ndt'], ' ', $option['votes'], ' (', $option['percent'], '%)'; echo '
'; } echo '
'; if ($context['allow_poll_view']) echo '

', $txt['poll_total_voters'], ': ', $context['poll']['total_votes'], '

'; } // They are allowed to vote! Go to it! else { echo '
'; // Show a warning if they are allowed more than one option. if ($context['poll']['allowed_warning']) echo '

', $context['poll']['allowed_warning'], '

'; echo '
    '; // Show each option with its button - a radio likely. foreach ($context['poll']['options'] as $option) echo '
  • ', $option['vote_button'], '
  • '; echo '
'; } // Is the clock ticking? if (!empty($context['poll']['expire_time'])) echo '

', ($context['poll']['is_expired'] ? $txt['poll_expired_on'] : $txt['poll_expires_on']), ': ', $context['poll']['expire_time'], '

'; echo '
'; template_button_strip($context['poll_buttons']); echo '
'; } // Does this topic have some events linked to it? if (!empty($context['linked_calendar_events'])) { echo '

', $txt['calendar_linked_events'], '

    '; foreach ($context['linked_calendar_events'] as $event) echo '
  • ', ($event['can_edit'] ? ' ' : ''), '', $event['title'], ': ', $event['start_date'], ($event['start_date'] != $event['end_date'] ? ' - ' . $event['end_date'] : ''), '
  • '; echo '
'; } // Show the page index... "Pages: [1]". echo '
', template_button_strip($context['normal_buttons'], 'right'), ' ', $context['menu_separator'], '', $txt['go_down'], '
'; // Show the topic information - icon, subject, etc. echo '

', $txt['topic'], ': ', $context['subject'], ' (', $context['num_views_text'], ') ', $context['previous_next'], '

'; if (!empty($settings['display_who_viewing'])) { echo '

'; // Show just numbers...? if ($settings['display_who_viewing'] == 1) echo count($context['view_members']), ' ', count($context['view_members']) == 1 ? $txt['who_member'] : $txt['members']; // Or show the actual people viewing the topic? else echo empty($context['view_members_list']) ? '0 ' . $txt['members'] : implode(', ', $context['view_members_list']) . ((empty($context['view_num_hidden']) || $context['can_moderate_forum']) ? '' : ' (+ ' . $context['view_num_hidden'] . ' ' . $txt['hidden'] . ')'); // Now show how many guests are here too. echo $txt['who_and'], $context['view_num_guests'], ' ', $context['view_num_guests'] == 1 ? $txt['guest'] : $txt['guests'], $txt['who_viewing_topic'], '

'; } echo '
'; $context['ignoredMsgs'] = array(); $context['removableMessageIDs'] = array(); // Get all the messages... while ($message = $context['get_message']()) template_single_post($message); echo '
'; // Show the page index... "Pages: [1]". echo '
', template_button_strip($context['normal_buttons'], 'right'), ' ', $context['menu_separator'], '', $txt['go_up'], '
'; // Show the lower breadcrumbs. theme_linktree(); echo '
', template_button_strip($context['mod_buttons'], 'bottom', array('id' => 'moderationbuttons_strip')), '
'; // Show the jumpto box, or actually...let Javascript do it. echo '
 
'; if ($context['can_reply']) { echo '

', $txt['quick_reply'], '

', $txt['quick_reply_desc'], '

', $context['is_locked'] ? '

' . $txt['quick_reply_warning'] . '

' : '', $context['oldTopicError'] ? '

' . sprintf($txt['error_old_topic'], $modSettings['oldTopicDays']) . '

' : '', ' ', $context['can_reply_approved'] ? '' : '' . $txt['wait_for_approval'] . '', ' ', !$context['can_reply_approved'] && $context['require_verification'] ? '
' : '', '
'; // Guests just need more. if ($context['user']['is_guest']) echo ' ', $txt['name'], ': ', $txt['email'], ':
'; // Is visual verification enabled? if ($context['require_verification']) echo ' ', $txt['verification'], ':', template_control_verification($context['visual_verification_id'], 'quick_reply'), '
'; // Using the full editor if (empty($options['use_editor_quick_reply'])) { echo '
'; } else { // Show the actual posting area... if ($context['show_bbc']) { echo '
'; } // What about smileys? if (!empty($context['smileys']['postform']) || !empty($context['smileys']['popup'])) echo '
'; echo ' ', template_control_richedit($context['post_box_name'], 'smileyBox_message', 'bbcBox_message'), ' '; } echo '
'; if ($context['show_spellchecking']) echo ' '; if ($context['drafts_save']) echo ' '; if (!empty($context['drafts_autosave']) && !empty($options['drafts_autosave_enabled'])) echo '
'; echo '
'; } else echo '
'; // draft autosave available and the user has it enabled? if (!empty($context['drafts_autosave']) && !empty($options['drafts_autosave_enabled'])) echo ' '; if ($context['show_spellchecking']) echo '
'; echo ' '; } function template_single_post($message, $force_alternate = null) { global $context, $settings, $options, $txt, $scripturl, $modSettings; static $alternate = false; if ($force_alternate !== null) $alternate = $force_alternate; $ignoring = false; if ($message['can_remove']) $context['removableMessageIDs'][] = $message['id']; // Are we ignoring this message? if (!empty($message['is_ignored'])) { $ignoring = true; $context['ignoredMsgs'][] = $message['id']; } // Show the message anchor and a "new" anchor if this message is new. echo '
', $message['id'] != $context['first_message'] ? ' ' . ($message['first_new'] ? '' : '') : '', '
'; // Show information about the poster of this message. echo '

'; // Show online and offline buttons? if (!empty($modSettings['onlineEnable']) && !$message['member']['is_guest']) echo ' ', $context['can_send_pm'] ? '' : '', '', $message['member']['online']['text'], '', $context['can_send_pm'] ? '' : ''; // Show a link to the member's profile. echo ' ', $message['member']['link'], '

'; echo '
    '; // Show the user's avatar. if (!empty($settings['show_user_images']) && empty($options['show_no_avatars']) && !empty($message['member']['avatar']['image'])) echo '
  • ', $message['member']['avatar']['image'], '
  • '; // Show the post group icons, but not for guests. if (!$message['member']['is_guest']) echo '
  • ', $message['member']['group_icons'], '
  • '; // Show the member's primary group (like 'Administrator') if they have one. if (!empty($message['member']['group'])) echo '
  • ', $message['member']['group'], '
  • '; // Show the member's custom title, if they have one. if (!empty($message['member']['title'])) echo '
  • ', $message['member']['title'], '
  • '; // Don't show these things for guests. if (!$message['member']['is_guest']) { // Show the post group if and only if they have no other group or the option is on, and they are in a post group. if ((empty($settings['hide_post_group']) || $message['member']['group'] == '') && $message['member']['post_group'] != '') echo '
  • ', $message['member']['post_group'], '
  • '; // Show how many posts they have made. if (!isset($context['disabled_fields']['posts'])) echo '
  • ', $txt['member_postcount'], ': ', $message['member']['posts'], '
  • '; // Is karma display enabled? Total or +/-? if ($modSettings['karmaMode'] == '1') echo '
  • ', $modSettings['karmaLabel'], ' ', $message['member']['karma']['good'] - $message['member']['karma']['bad'], '
  • '; elseif ($modSettings['karmaMode'] == '2') echo '
  • ', $modSettings['karmaLabel'], ' +', $message['member']['karma']['good'], '/-', $message['member']['karma']['bad'], '
  • '; // Is this user allowed to modify this member's karma? if ($message['member']['karma']['allow']) echo '
  • ', $modSettings['karmaApplaudLabel'], ' ', $modSettings['karmaSmiteLabel'], '
  • '; // Show the member's gender icon? if (!empty($settings['show_gender']) && $message['member']['gender']['image'] != '' && !isset($context['disabled_fields']['gender'])) echo '
  • ', $txt['gender'], ': ', $message['member']['gender']['image'], '
  • '; // Show their personal text? if (!empty($settings['show_blurb']) && $message['member']['blurb'] != '') echo '
  • ', $message['member']['blurb'], '
  • '; // Any custom fields to show as icons? if (!empty($message['member']['custom_fields'])) { $shown = false; foreach ($message['member']['custom_fields'] as $custom) { if ($custom['placement'] != 1 || empty($custom['value'])) continue; if (empty($shown)) { $shown = true; echo '
    1. '; } echo '
    2. ', $custom['value'], '
    3. '; } if ($shown) echo '
  • '; } // This shows the popular messaging icons. if ($message['member']['has_messenger'] && $message['member']['can_view_profile']) echo '
    1. ', !empty($message['member']['icq']['link']) ? '
    2. ' . $message['member']['icq']['link'] . '
    3. ' : '', ' ', !empty($message['member']['skype']['link']) ? '
    4. ' . $message['member']['skype']['link'] . '
    5. ' : '', ' ', !empty($message['member']['aim']['link']) ? '
    6. ' . $message['member']['aim']['link'] . '
    7. ' : '', ' ', !empty($message['member']['yim']['link']) ? '
    8. ' . $message['member']['yim']['link'] . '
    9. ' : '', '
  • '; // Show the website and email address buttons. if ($message['member']['show_profile_buttons']) { echo '
    1. '; // Don't show an icon if they haven't specified a website. if ($message['member']['website']['url'] != '' && !isset($context['disabled_fields']['website'])) echo '
    2. ', ($settings['use_image_buttons'] ? '' : $txt['www']), '
    3. '; // Since we know this person isn't a guest, you *can* message them. if ($context['can_send_pm']) echo '
    4. ', $settings['use_image_buttons'] ? '' : ($message['member']['online']['is_online'] ? $txt['pm_online'] : $txt['pm_offline']), '
    5. '; echo '
  • '; } // Any custom fields for standard placement? if (!empty($message['member']['custom_fields'])) { foreach ($message['member']['custom_fields'] as $custom) if (empty($custom['placement']) || empty($custom['value'])) echo '
  • ', $custom['title'], ': ', $custom['value'], '
  • '; } } // Otherwise, show the guest's email. elseif (!empty($message['member']['email']) && $message['member']['show_email']) echo ' '; // Show the IP to this user for this post - because you can moderate? if (!empty($context['can_moderate_forum']) && !empty($message['member']['ip'])) echo '
  • ', $message['member']['ip'], ' (?)
  • '; // Or, should we show it because this is you? elseif ($message['can_see_ip']) echo '
  • ', $message['member']['ip'], '
  • '; // Okay, are you at least logged in? Then we can show something about why IPs are logged... elseif (!$context['user']['is_guest']) echo '
  • ', $txt['logged'], '
  • '; // Otherwise, you see NOTHING! else echo '
  • ', $txt['logged'], '
  • '; // Are we showing the warning status? // Don't show these things for guests. if (!$message['member']['is_guest'] && $message['member']['can_see_warning']) echo '
  • ', $context['can_issue_warning'] ? '' : '', '', $txt['user_warn_' . $message['member']['warning_status']], '', $context['can_issue_warning'] ? '' : '', '', $txt['warn_' . $message['member']['warning_status']], '
  • '; echo '
'; echo '
'; //Some people dont want subject ... The div is still required or quick edit breaks... echo '
', (empty($settings['subject_toggle']) ? '' : '' . $message['subject'] . ''), '
'; echo '
', !empty($message['counter']) ? ' #' . $message['counter'] : '', ' ', '
', $message['time'], ''; // Show "<< Last Edit: Time by Person >>" if this post was edited. But we need the div even if it wasn't modified! // Because we insert into it through AJAX and we don't want to stop themers moving it around if they so wish so they can put it where they want it. echo ' '; if ($settings['show_modify'] && !empty($message['modified']['name'])) echo $message['modified']['last_edit_text']; echo ''; echo '
'; // Ignoring this user? Hide the post. if ($ignoring) echo '
', $txt['ignoring_user'], '
'; // Show the post itself, finally! echo '
'; if (!$message['approved'] && $message['member']['id'] != 0 && $message['member']['id'] == $context['user']['id']) echo '
', $txt['post_awaiting_approval'], '
'; echo '
'; // Assuming there are attachments... if (!empty($message['attachment'])) { echo ' '; } // And stuff below the attachments echo '
'; // Maybe they want to report this post to the moderator(s)? if ($context['can_report_moderator']) echo ' '; // What about likes? echo '
    '; if (!empty($message['likes']['can_like'])) { echo ' '; } if (!empty($message['likes']['count'])) { $context['some_likes'] = true; $count = $message['likes']['count']; $base = 'likes_'; if ($message['likes']['you']) { $base = 'you_' . $base; $count--; } $base .= (isset($txt[$base . $count])) ? $count : 'n'; echo ' '; } echo '
'; // Show the quickbuttons, for various operations on posts. if ($message['can_approve'] || $message['can_unapprove'] || $context['can_reply'] || $message['can_modify'] || $message['can_remove'] || $context['can_split'] || $context['can_restore_msg'] || $context['can_quote']) { echo '
    '; // Can they reply? if ($context['can_quote']) echo '
  • ', $txt['quote_action'], '
  • '; // Can the user modify the contents of this post? Show the modify inline image. if ($message['can_modify']) echo '
  • ', $txt['modify_msg'], '', $txt['quick_edit'], '
  • '; if ($message['can_approve'] || $message['can_unapprove'] || $message['can_modify'] || $message['can_remove'] || $context['can_split'] || $context['can_restore_msg']) echo '
  • ', $txt['post_options']; echo '
      '; // Can the user modify the contents of this post? if ($message['can_modify']) echo '
    • ', $txt['modify'], '
    • '; // How about... even... remove it entirely?! if ($message['can_remove']) echo '
    • ', $txt['remove'], '
    • '; // What about splitting it off the rest of the topic? if ($context['can_split'] && !empty($context['real_num_replies'])) echo '
    • ', $txt['split'], '
    • '; // Can we issue a warning because of this post? Remember, we can't give guests warnings. if ($context['can_issue_warning'] && !$message['is_message_author'] && !$message['member']['is_guest']) echo '
    • ', $txt['issue_warning'], '
    • '; // Can we restore topics? if ($context['can_restore_msg']) echo '
    • ', $txt['restore_message'], '
    • '; // Maybe we can approve it, maybe we should? if ($message['can_approve']) echo '
    • ', $txt['approve'], '
    • '; // Maybe we can unapprove it? if ($message['can_unapprove']) echo '
    • ', $txt['unapprove'], '
    • '; echo '
  • '; // Show a checkbox for quick moderation? if (!empty($options['display_quick_mod']) && $options['display_quick_mod'] == 1 && $message['can_remove']) echo ' '; if ($message['can_approve'] || $context['can_reply'] || $message['can_modify'] || $message['can_remove'] || $context['can_split'] || $context['can_restore_msg']) echo '
'; } echo '
'; echo '
'; // Are there any custom profile fields for above the signature? if (!empty($message['member']['custom_fields'])) { $shown = false; foreach ($message['member']['custom_fields'] as $custom) { if ($custom['placement'] != 2 || empty($custom['value'])) continue; if (empty($shown)) { $shown = true; echo '
    '; } echo '
  • ', $custom['value'], '
  • '; } if ($shown) echo '
'; } // Show the member's signature? if (!empty($message['member']['signature']) && empty($options['show_no_signatures']) && $context['signature_enabled']) echo ' '; echo '

'; } ?>