PDA

View Full Version : Profile Tab -- Tab Data displaying on every "Tab"


CypherSTL
01-11-2010, 04:51 AM
I've looked at other mods which also add profile tabs in VB4, and from what I can tell my plugin is coded properly.

However, when I load a Profile, the block data is being displayed on every tab, and not only on the tab it's told to.


$blocklist['myawards'] = array(
'class' => 'MyAwards',
'title' => $vbphrase['awards'],
'hook_location' => 'profile_left_last',
'wrap' => false
);

class vB_ProfileBlock_MyAwards extends vB_ProfileBlock
{
var $template_name = 'memberinfo_block_myawards';

function confirm_empty_wrap()
{
return false;
}

function confirm_display()
{
return ($this->block_data['myawards'] != '');
}

function prepare_output($id = '', $options = array())
{
global $show, $vbphrase, $stylevar, $vbcollapse, $bgclass, $vbulletin;

require_once(DIR . '/includes/class_bbcode.php');
$bbcode_parser =& new vB_BbCodeParser($this->registry, fetch_tag_list());


$result = $this->registry->db->query_read('
SELECT
*
FROM
' . TABLE_PREFIX . 'award_user AS award_user
LEFT JOIN ' . TABLE_PREFIX . 'award AS award USING (award_id)
WHERE
award_user.userid = ' . $this->profile->userinfo['userid'] . '
AND award.award_active = "1"
ORDER BY
'.$vbulletin->options['aw_awardorder'].'
');

if (($vbulletin->options['aw_points']) AND ($this->profile->userinfo['userid']))
{
$userpoints = $this->registry->db->query_read('
SELECT a.*, au.*, SUM(award_pointvalue) AS TotalPoints
FROM ' . TABLE_PREFIX . 'award a, ' . TABLE_PREFIX . 'award_user au
WHERE (au.userid = '.$this->profile->userinfo['userid'].') AND (a.award_id=au.award_id) AND (a.award_active = "1")
');

while ($array = $this->registry->db->fetch_array($userpoints))
{
$this->block_data['total_points'] = $array['TotalPoints'];
}
}

$num = $this->block_data['num'] = $this->registry->db->num_rows($result);

$this->block_data['myawards'] = '';

if ($num > 0)
{
// Display Awards
while ($award = $this->registry->db->fetch_array($result))
{
exec_switch_bg();

$award['award_desc'] = $bbcode_parser->parse($award['award_desc']);
$award['issue_reason'] = $bbcode_parser->parse($award['issue_reason']);

$award_issue_date = vbdate($this->registry->options['dateformat'], $award['issue_time'], true);
$award_issue_time = vbdate($this->registry->options['timeformat'], $award['issue_time']);

//- VB3 -// eval('$this->block_data[\'myawards\'] .= "' . fetch_template('awards_userawards_bit') . '";');
//- BEGIN VB4 -//
$templater = vB_Template::create('awards_userawards_bit');
$templater->register('award', $award);
$templater->register('award_issue_date', $award_issue_date);
$templater->register('award_issue_time', $award_issue_time);
$uawardbits .= $templater->render();
//- END VB4 -//
}
}
$this->block_data['myawards'] = $uawardbits;
}
}

Any ideas?

ageurtse
01-11-2010, 05:04 AM
maybe this thread could help you.
i had the same problem and with the help of lynne i solved it.
https://vborg.vbsupport.ru/showthread.php?t=231539

CypherSTL
01-11-2010, 05:30 AM
I seen that too when I was searching around.

I already have the
'wrap' => false

CypherSTL
01-11-2010, 05:33 AM
I've attached a screenshot with what it looks like right now on the Profile Page.

That content is displaying with every tab, and not just the Awards tab. I cannot figure this out. Everything else I'm figuring out pretty well, given how much is changing.

ageurtse
01-11-2010, 06:50 AM
did you have your template setup right.
or maybe if you use div's you didn't close a div
i think it is somthing like that.

can you post your template here, maybe we can find somthing wrong

CypherSTL
01-11-2010, 07:22 AM
All my templates look like they're in good shape.

memberinfo_block_myawards

<br />
<div class="blockhead">
$vbphrase[award_showcase] - $block_data[num] $vbphrase[awards] <if condition="$vboptions[aw_points]"> - $block_data[total_points] $vbphrase[points] </if>
</div>
<table width="100%">
<tr align="center">
<if condition="$vboptions[aw_showicon]">
<th class="blocksubhead" nowrap="nowrap">$vbphrase[award_icon]</th>
</if>

<th class="blocksubhead" nowrap="nowrap">$vbphrase[award_image]</th>

<th class="blocksubhead" width="100%">$vbphrase[award_description]</th>
</tr>
$block_data[myawards]
</table>
awards_userawards_bit

<tr>
<if condition="$vboptions[aw_showicon]">
<td class="$bgclass" align="center"><br />
<img src="$award[award_icon_url]" border="0">
</td>
</if>
<if condition="$vboptions[aw_showimage]">
<td class="$bgclass" valign="top" align="center"><br />
<a href="awards.php?$session[sessionurl]#award$award[award_id]">
<img src="$award[award_img_url]" border="0"></a>
</td>
</if>

<td class="$bgclass" valign="top"><br />
<a name="aw_issue$award[issue_id]"></a>
$vbphrase[award_name]: <b>$award[award_name]</b><br>
$award[award_desc]
<div style="font-size:11px">
<fieldset class="fieldset">
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0">
<tr>
<td>
<i>$vbphrase[award_time]: $award_issue_date $award_issue_time<br />
<i>$vbphrase[award_reason]: $award[issue_reason]</i>
</td>
</tr>
</table>
</fieldset>
</td>
</tr>


--------------- Added 1263201759 at 1263201759 ---------------

Everything works 100% correctly on vB3.8, just having a bit of a rough time on 4.0

ageurtse
01-11-2010, 08:03 AM
maybe this could help you.

in your memberinfo_block_myawards

do this, alter the tab name to what you have

<div id="view-mymodification" <vb:if condition="$selected_tab == 'mymodification'"> class="selected_view_section"<vb:else />class="view_section"</vb:if>>

//Your code here

</div>
<div class="underblock"></div>
<!-- / {vb:raw id} -->

CypherSTL
01-11-2010, 08:40 AM
That worked, Thanks!