vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   [RESOLVED] Conditions being ignored when viewed by guest (https://vborg.vbsupport.ru/showthread.php?t=325399)

Makaze 07-17-2017 03:07 PM

[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?

MarkFL 07-17-2017 03:36 PM

Try changing it to:

HTML Code:

<vb:if condition='$post["userid"] == $bbuserinfo["userid"]'> shown</vb:if>

Dave 07-17-2017 03:51 PM

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.

Makaze 07-17-2017 04:39 PM

Quote:

Originally Posted by Dave (Post 2588563)
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 (Post 2588562)
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.

Dave 07-17-2017 06:38 PM

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}

Makaze 07-17-2017 06:56 PM

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.

Makaze 07-23-2017 03:03 PM

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.


All times are GMT. The time now is 06:40 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01254 seconds
  • Memory Usage 1,741KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (6)bbcode_html_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (7)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete