2016-09-13, 09:57 PM
---=== This is work in progress! ===----
---=== Please always read my latest post for the most recent version ===----
---=== Please always read my latest post for the most recent version ===----
In case you are interested to add functionality to MyBB so it shows threads in the Reddit style,
I'd like to share my work.
See attached image "mybbredditstyle" for how it looks in this very early stage.
I had to modify two php files, showthread.php and inc/functions_post.php and to add a few templates.
New template "postbit_threaded":
{$ignore_bit}
<table style="width:100%" border="0" cellpadding="0" cellspacing="0" >
<tr>
<td width="{$indentsize}%"></td>
<td>
<table style="width:100%" border="0" cellspacing="0" cellpadding="0" class="tborder">
<tr>
<td id="posts_container">
<div id="posts">
<a name="pid{$post['pid']}" id="pid{$post['pid']}"></a>
<div class="post {$unapproved_shade}" style="{$post_visibility}" id="post_{$post['pid']}">
<div class="post_author">
{$post['useravatar']}
<div class="author_information">
<strong><span class="largetext">{$post['profilelink']}</span></strong> {$post['onlinestatus']}<br />
<span class="smalltext">
{$post['usertitle']}<br />
{$post['userstars']}
{$post['groupimage']}
</span>
</div>
<div class="author_statistics">
{$post['user_details']}
</div>
</div>
<div class="post_content">
<div class="post_head">
{$post['posturl']}
{$post['icon']}
<span class="post_date">{$post['postdate']} <span class="post_edit" id="edited_by_{$post['pid']}">{$post['editedmsg']}</span></span>
{$post['subject_extra']}
</div>
<div class="post_body scaleimages" id="pid_{$post['pid']}">
{$post['message']}
</div>
{$post['attachments']}
{$post['signature']}
<div class="post_meta" id="post_meta_{$post['pid']}">
{$post['iplogged']}
</div>
</div>
<div class="post_controls">
<div class="postbit_buttons author_buttons float_left">
{$post['button_email']}{$post['button_pm']}{$post['button_www']}{$post['button_find']}{$post['button_rep']}
</div>
<div class="postbit_buttons post_management_buttons float_right">
{$post['button_edit']}{$post['button_quickdelete']}{$post['button_quickrestore']}{$post['button_quote']}{$post['button_multiquote']}{$post['button_report']}{$post['button_warn']}{$post['button_purgespammer']}{$post['button_reply_pm']}{$post['button_replyall_pm']}{$post['button_forward_pm']}{$post['button_delete_pm']}
</div>
</div>
</div>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
New template showthread_threaded:
<html>
<head>
<title>{$thread['subject']}</title>
{$headerinclude}
<script type="text/javascript">
<!--
var quickdelete_confirm = "{$lang->quickdelete_confirm}";
var quickrestore_confirm = "{$lang->quickrestore_confirm}";
var allowEditReason = "{$mybb->settings['alloweditreason']}";
lang.save_changes = "{$lang->save_changes}";
lang.cancel_edit = "{$lang->cancel_edit}";
lang.quick_edit_update_error = "{$lang->quick_edit_update_error}";
lang.quick_reply_post_error = "{$lang->quick_reply_post_error}";
lang.quick_delete_error = "{$lang->quick_delete_error}";
lang.quick_delete_success = "{$lang->quick_delete_success}";
lang.quick_delete_thread_success = "{$lang->quick_delete_thread_success}";
lang.quick_restore_error = "{$lang->quick_restore_error}";
lang.quick_restore_success = "{$lang->quick_restore_success}";
lang.editreason = "{$lang->postbit_editreason}";
// -->
</script>
<!-- jeditable (jquery) -->
<script type="text/javascript" src="{$mybb->asset_url}/jscripts/report.js?ver=1804"></script>
<script src="{$mybb->asset_url}/jscripts/jeditable/jeditable.min.js"></script>
<script type="text/javascript" src="{$mybb->asset_url}/jscripts/thread.js?ver=1804"></script>
</head>
<body>
{$header}
{$threadnotesbox}
{$pollbox}
<div class="float_left">
{$multipage}
</div>
<div class="float_right">
{$newreply}
</div>
{$ratethread}
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder tfixed clear">
<tr>
<td class="thead">
<div class="float_right">
<span class="smalltext"><strong><a href="javascript:;" id="thread_modes">{$lang->thread_modes}</a>{$threadnoteslink}</strong></span>
</div>
<div>
<strong>{$thread['threadprefix']}{$thread['subject']}</strong>
</div>
</td>
</tr>
{$posts}
<tr>
<td class="tfoot">
{$search_thread}
<div>
<strong>« <a href="{$next_oldest_link}">{$lang->next_oldest}</a> | <a href="{$next_newest_link}">{$lang->next_newest}</a> »</strong>
</div>
</td>
</tr>
</table>
<div class="float_left">
{$multipage}
</div>
<div style="padding-top: 4px;" class="float_right">
{$newreply}
</div>
<br class="clear" />
{$quickreply}
{$threadexbox}
{$similarthreads}
<br />
<div class="float_left">
<ul class="thread_tools">
<li class="printable"><a href="printthread.php?tid={$tid}">{$lang->view_printable}</a></li>
{$sendthread}
<li class="subscription_{$add_remove_subscription}"><a href="usercp2.php?action={$add_remove_subscription}subscription&tid={$tid}&my_post_key={$mybb->post_code}">{$add_remove_subscription_text}</a></li>
{$addpoll}
</ul>
</div>
<div class="float_right" style="text-align: right;">
{$moderationoptions}
{$forumjump}
</div>
<br class="clear" />
{$usersbrowsing}
{$footer}
<div id="thread_modes_popup" class="popup_menu" style="display: none;"><div class="popup_item_container"><a href="showthread.php?mode=linear&tid={$tid}&pid={$pid}#pid{$pid}" class="popup_item">{$lang->linear}</a></div><div class="popup_item_container"><a href="showthread.php?mode=threaded&tid={$tid}&pid={$pid}#pid{$pid}" class="popup_item">{$lang->threaded}</a></div></div>
<script type="text/javascript">
// <!--
if(use_xmlhttprequest == "1")
{
$("#thread_modes").popupMenu();
}
// -->
</script>
<script type="text/javascript">
$(".author_avatar img").error(function () {
$(this).unbind("error").closest('.author_avatar').remove();
});
</script>
</body>
</html>
Please be aware that I never before programmed in PHP until today and so my program changes are probably very clumsy.
This is work in progress. Files are not yet cleaned/polished up. Updates follow soon.
TBD:
- Make separate user title templates for threaded view (flatter appearance -> more messages on screen)
- Fix the post function (should order in new post correctly in threaded view also without refreshing page)
- Round the corners somewhat, making the whole stuff look less boxy, and other fine-polishing
- Highlight new messages
Whatever I try to upload the source, be it in plain text or compressed, I get the notice "Sorry, you have been blocked." This sucks balls. Any idea what to do?
P.S.2:
I just put the sources onto pastebin:
showthread.php: http://pastebin.com/fp1fEaAA
inc/functions_post.php: http://pastebin.com/MtqePKpx
Edit #3: It's real fun to play with MyBB. Installed just a few days ago and modded it today. I like it!