Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 07-17-2017, 03:07 PM
Makaze's Avatar
Makaze Makaze is offline
 
Join Date: Apr 2015
Posts: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default [RESOLVED] Conditions being ignored when viewed by guest

I am editing a template with the following conditional structure:

HTML Code:
<vb:if condition="$show['dbtech_thanks_area']">
<vb:if condition="$show['dbtech_thanks_li']">
<li class="postbitlegacy postcontainer dbtech_thanks_container<vb:if condition="$post['userid'] == $bbuserinfo['userid']"> shown</vb:if>">
<vb:else />
<div<vb:if condition="!$show['dbtech_thanks_lineafter']"> class="signature dbtech_thanks_container<vb:if condition="$post['userid'] == $bbuserinfo['userid']"> shown</vb:if>"</vb:if> style="clear:both;">
</vb:if>
	<vb:if condition="!$vboptions['dbtech_thanks_cloud_displaystyle']">
	<div class="posthead">
		<span class="postdate">Post Thanks<vb:if condition="$extrainfo"> - {vb:raw extrainfo}</vb:if></span>
	</div>
	</vb:if>

	<div class="postdetails" id="dbtech_thanks_entries_{vb:var post.postid}">
		{vb:raw entries}
	</div>

	<vb:if condition="$actions">
	<div class="postfoot">
		<div class="textcontrols">
			<span class="postlinking">
				{vb:raw actions}
			</span>
		</div>
	</div>
	</vb:if>
<vb:if condition="$show['dbtech_thanks_li']">
</li>
<vb:else />
</div>
<vb:if condition="$show['dbtech_thanks_lineafter']"><div class="signature">&nbsp;</div></vb:if>
</vb:if>
</vb:if>
The template works correctly when viewed by a member who is logged in. However, when a guest views it, this condition gets ignored in both places:

HTML Code:
<vb:if condition="$post['userid'] == $bbuserinfo['userid']"> shown</vb:if>
The shown class is added no matter what condition I add around it. I have even tried changing the condition to true === false. That condition is ignored when viewed by a guest. I tested that changes were working by adding {vb:raw} for the variables in the template. The values display correctly immediately after saving. The issue is isolated to the vbulletin condition statement.

Once again, it works properly when logged in, but not when viewing as a guest.

How can I resolve this?
Reply With Quote
  #2  
Old 07-17-2017, 03:36 PM
MarkFL's Avatar
MarkFL MarkFL is offline
 
Join Date: Feb 2014
Location: St. Augustine, FL
Posts: 3,853
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try changing it to:

HTML Code:
<vb:if condition='$post["userid"] == $bbuserinfo["userid"]'> shown</vb:if>
Reply With Quote
  #3  
Old 07-17-2017, 03:51 PM
Dave Dave is offline
 
Join Date: May 2010
Posts: 2,583
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The condition $post['userid'] == $bbuserinfo['userid'] checks if the userid of the post is the same as the userid of the current logged in user. Guests have a userid of 0 which is why it never (should) evaluates to true.

Have you tried changing == to ===? That will also match the data type.
Reply With Quote
  #4  
Old 07-17-2017, 04:39 PM
Makaze's Avatar
Makaze Makaze is offline
 
Join Date: Apr 2015
Posts: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dave View Post
The condition $post['userid'] == $bbuserinfo['userid'] checks if the userid of the post is the same as the userid of the current logged in user. Guests have a userid of 0 which is why it never (should) evaluates to true.

Have you tried changing == to ===? That will also match the data type.
Yes. I tested it with true === false as well. The condition was ignored regardless of contents.

--------------- Added [DATE]1500316988[/DATE] at [TIME]1500316988[/TIME] ---------------

Quote:
Originally Posted by MarkFL View Post
Try changing it to:

HTML Code:
<vb:if condition='$post["userid"] == $bbuserinfo["userid"]'> shown</vb:if>
This had no effect.

Once again, the code works when logged in. It fails when logged out.
Reply With Quote
  #5  
Old 07-17-2017, 06:38 PM
Dave Dave is offline
 
Join Date: May 2010
Posts: 2,583
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

So if I understand you correctly, your condition always evaluates to true when a guest is viewing it? Thus the class "shown" is always added?

Is the $post variable available in the template? Also, try putting the following in your template before the div that contains the if condition so you can see what it outputs:
HTML Code:
{vb:raw post.userid} -> {vb:raw bbuserinfo.userid}
Reply With Quote
  #6  
Old 07-17-2017, 06:56 PM
Makaze's Avatar
Makaze Makaze is offline
 
Join Date: Apr 2015
Posts: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No, you are not understanding.

It behaves as if the condition tag does not exist, even if the condition in the quotes is "true === false", instead of my condition I would like to use.

I can access the variables and output them to the screen using {vb:raw post.userid} and {vb:raw bbuserinfo.userid}. They output correctly, including for guests. The variables exist in the template.

Furthermore, the code:

HTML Code:
<vb:if condition="true === false"> shown</vb:if>
Should never evaluate to true. Yet it does, in this template, while being viewed by a guest.

In other words, it is behaving as if the conditional tag is not there, and just shows the contents.

It has nothing to do with the actual statements in the conditions.

--------------- Added [DATE]1500332271[/DATE] at [TIME]1500332271[/TIME] ---------------

It appeared to be the location of the statement. It works if it is at a tier 2 nesting or global if.

I believe there is a bug related to nesting and guest viewing.
Reply With Quote
  #7  
Old 07-23-2017, 03:03 PM
Makaze's Avatar
Makaze Makaze is offline
 
Join Date: Apr 2015
Posts: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

RESOLVED!

The issue was a piece of JavaScript that was adding the shown class after the page had loaded. The reason it did so even if the user was logged out, was because the condition was to find the Add Thanks button, and if it isn't there, add the shown class. The button isn't there for guests, so it added shown to everything.

I apologize for wasting everyone's time.
Reply With Quote
Благодарность от:
MarkFL
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:30 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.10055 seconds
  • Memory Usage 2,237KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (6)bbcode_html
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (7)post_thanks_box
  • (1)post_thanks_box_bit
  • (7)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (7)post_thanks_postbit_info
  • (7)postbit
  • (7)postbit_onlinestatus
  • (7)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete