vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 4.x Template Modifications (https://vborg.vbsupport.ru/forumdisplay.php?f=246)
-   -   Show Thread Enhancements - Hidden Signatures - Hide Sigs (spoiler) based on Post Count (anti-spam) or Usergroup (https://vborg.vbsupport.ru/showthread.php?t=249182)

BirdOPrey5 08-22-2010 10:00 PM

Hidden Signatures - Hide Sigs (spoiler) based on Post Count (anti-spam) or Usergroup
 
1 Attachment(s)
This mod allows you to hide a user's signature by default. There will be a "Show Signature" button displayed instead of a sig... if you click on the button the real signature will show- you can then click the button again if you want to re-hide the signature.

This has been tested on VB 4.0.6 in IE / Firefox / Chrome / Safari and Opera.

You can hide everyone's signature if you want but more then likely you'd want to hide signatures based on a user's post count- this could help foil would be signature-spammers by not showing their content or hiding sigs of new users you just don't trust yet. Alternatively you can hide signatures by usergroup, such as for registered users but allow sigs to show for VIP members only. Of course you can also use a combination of the above to- hide sigs for all users with less than 30 posts unless they are VIP members...

This is a Template Edit.

Edit your postbit or postbit_legacy template, whichever you use.

Find the following code:
Code:

{vb:raw post.signature}
Note this is in the middle of a line, you may want to edit the line so that it's on its own line- extra lines don't matter in templates.

Replace the code with:
Code:

<!-- Begin Hidden sig -->
<vb:if condition="$post[posts] < 10">
                          <div style="margin-top:5px">
                          <div class="smallfont" style="margin-bottom:2px">
                          <input type="button" value="Show Signature"
                          style="font-size:10px;margin:0px;padding:0px;"
                          onClick="if (this.parentNode.parentNode.getElementsByTagName
                          ('div')[1].getElementsByTagName('div')[0].style.display != '')
                          { this.parentNode.parentNode.getElementsByTagName(
                          'div')[1].getElementsByTagName('div')[0].style.display = '';
                          this.innerText = ''; this.value = 'Hide Signature'; } else
                          { this.parentNode.parentNode.getElementsByTagName('div')
                          [1].getElementsByTagName('div')[0].style.display = 'none';
                          this.innerText = ''; this.value = 'Show Signature'; }">
                          </div> <div style="margin: 0px; padding: 6px;">
                          <div style="display: none;">
                            {vb:raw post.signature}
                            </div></div></div>
<vb:else />
  {vb:raw post.signature}
</vb:if>
<!-- End Hidden sig -->

That exact code will auto hide signatures of anyone with less then 10 posts.

To change this behavior edit the "if" statement at the top of the code:
<vb:if condition="$post[posts] < 10">

Change the number 10 to whatever minimum post count you want.

If you want to hide sigs per usergroup change the line to:
<vb:if condition="is_member_of($post, 2, 5, 7 )">

That code will hide sigs of registered users, mods, and super-mods... maybe not what you want to do but a good way to show you how to use it. If you only want one usergroup removes the commas, such as:
<vb:if condition="is_member_of($post, 2)">

This will block it for only registered users.

You can combine both with an "AND" or "OR" statement:
<vb:if condition="is_member_of($post, 2) OR $post[posts] < 10">

This will hide sigs for all registered users or anyone with a post count less than 10 no matter what usergroup they are in.

Please click Mark As Installed if you use this. :)

Some code for this is based on this "spoiler" tag:
https://vborg.vbsupport.ru/showthread.php?t=184855

Download the .txt file for a copy of the Install Instructions...

BirdOPrey5 08-23-2010 01:18 PM

Translations:

Arabic - Thanks to Dr. osamA, Post # 4

Code:

<!-- Begin Hidden sig -->
<vb:if condition="$post[posts] < 10">
                          <div style="margin-top:5px"> 
                          <div class="smallfont" style="margin-bottom:2px"> 
                          <input type="button" value="اضهار التوقيع"
                          style="font-size:10px;margin:0px;padding:0px;" 
                          onClick="if (this.parentNode.parentNode.getElementsByTagName
                          ('div')[1].getElementsByTagName('div')[0].style.display != '')
                          { this.parentNode.parentNode.getElementsByTagName(
                          'div')[1].getElementsByTagName('div')[0].style.display = '';
                          this.innerText = ''; this.value = 'اخفاء التوقيع'; } else
                          { this.parentNode.parentNode.getElementsByTagName('div')
                          [1].getElementsByTagName('div')[0].style.display = 'none';
                          this.innerText = ''; this.value = 'اضهار التوقيع'; }">
                          </div> <div style="margin: 0px; padding: 6px;">
                          <div style="display: none;">
                            {vb:raw post.signature}
                            </div></div></div>
<vb:else />
  {vb:raw post.signature}
</vb:if>
<!-- End Hidden sig -->

More to come?

Alucard^ 08-23-2010 01:28 PM

Nice one, installed... i will test later.

Dr.osamA 08-23-2010 11:31 PM

Excellent
installed + 5 stars

here is code in Arabic

just last night I was thinking about this code you saved my time man thank you

PHP Code:

<!-- Begin Hidden sig -->
<
vb:if condition="$post[posts] < 10">
                           <
div style="margin-top:5px"
                           <
div class="smallfont" style="margin-bottom:2px"
                           <
input type="button" value="اضهار التوقيع" 
                           
style="font-size:10px;margin:0px;padding:0px;" 
                           
onClick="if (this.parentNode.parentNode.getElementsByTagName
                           ('div')[1].getElementsByTagName('div')[0].style.display != '') 
                           { this.parentNode.parentNode.getElementsByTagName(
                           'div')[1].getElementsByTagName('div')[0].style.display = ''; 
                           this.innerText = ''; this.value = 'اخفاء التوقيع'; } else 
                           { this.parentNode.parentNode.getElementsByTagName('div')
                           [1].getElementsByTagName('div')[0].style.display = 'none'; 
                           this.innerText = ''; this.value = 'اضهار التوقيع'; }"

                           </
div> <div style="margin: 0px; padding: 6px;">
                           <
div style="display: none;">
                            {
vb:raw post.signature}
                            </
div></div></div>
<
vb:else />
  {
vb:raw post.signature}
</
vb:if>
<!-- 
End Hidden sig --> 


sticky 08-24-2010 01:44 PM

This would be extremely useful for me for signatures that are not work safe.

Would there be any way to use this just for certain signatures and not all?

BirdOPrey5 08-24-2010 02:33 PM

Yeah that's actually what I use it for- just make a new usergroup "Hidden Sigs" and add anyone you want too it as a secondary usergroup.

Use the condition:
<vb:if condition="is_member_of($post, X)">

Where 'X' is the usergroup id of your Hidden Sigs usergroup.

sticky 08-26-2010 11:12 PM

Quote:

Originally Posted by BirdOPrey5 (Post 2088867)
Yeah that's actually what I use it for- just make a new usergroup "Hidden Sigs" and add anyone you want too it as a secondary usergroup.

Use the condition:
<vb:if condition="is_member_of($post, X)">

Where 'X' is the usergroup id of your Hidden Sigs usergroup.

Excellent, that is a solution I will use if necessary.

Would there be any way to add in hiding by userid or for users to tag their own sigs as NWS?

BirdOPrey5 08-27-2010 01:39 AM

Yes on both accounts... to show hide sigs based on user id:

Code:

<vb:if condition="in_array($bbuserinfo['userid'], array(X, Y, Z))">
Where X, Y, Z are userids of specific users...

Now to hide sigs of users who mark theirs as not work safe, also possible but will take a bit more...

First you need to make a Custom User Profile Field...
In Admin CP go to the menu on the left and choose "Add New User Profile Field" under "User Profile Fields."

Choose "Single Selection Radio Box" from the drop down menu...

On the next screen set the following...

Title: Work Safe Sig
Description: Is you signature "Work Safe?" If "No" it will be hidden by default.
Options:
Code:

Yes
No

Field Required: Yes, at registration and...
Private/Field Searchable.../Display on... All "No"
Display Page: Options: Thread Viewing
Leave all other settings to default and hit "Save" to create the profile field.

Now for the condition use:

Code:

<vb:if condition="($vbulletin->userinfo['fieldX'] != "No")">
Where "X" is the field number of the user profile field you just created.

Note- we are using !="No" (does NOT equal "No") instead of the more intuitive =="Yes" (equals "Yes") because the vast majority of users will probably never set this field at all so it physically won't equal "Yes" for most people, but that is OK, so long as it doesn't equal "No" we want a regular sig.

I hope this is easy enough to follow- if you have a question about it let me know.

Of course you can still use AND's or OR's as needed in the if statement such as:

Code:

<vb:if condition="in_array($bbuserinfo['userid'], array(2, 3, 4)) OR ($vbulletin->userinfo['field8'] != "No")">
Will hide the sig always for user id's 2, 3, and 4 and also hide the sigs for anyone else who sets custom field 8 to "No"

sticky 08-27-2010 05:59 AM

Damn bud, you are good!

Thank you so much for addressing my posts. Most people who do mods just tell you that isn't what theirs was designed to do so instead of working with people they work against them. You were nice enough to help, refreshing to see, and thank you.

BirdOPrey5 08-27-2010 02:50 PM

Quote:

Originally Posted by sticky (Post 2090217)
Damn bud, you are good!

Thank you so much for addressing my posts. Most people who do mods just tell you that isn't what theirs was designed to do so instead of working with people they work against them. You were nice enough to help, refreshing to see, and thank you.

You're welcome... to me releasing a mod is only 40% of the work, supporting it is 60% or more. In a community where any mod might be a person's first one you need to be prepared to help anyone with anything, else don't bother.:up:

ZeuQma 10-20-2010 06:02 PM

nice work, thank you..

brad99 11-30-2011 05:36 PM

very cool, thanks for your efforts!

Gord Lacey 09-19-2012 04:41 PM

Wonderful mod!

Now, I'm trying to find a way to have this be displayed only if a signature is quite long. Any way to set a condition like "Signature Length > 500"?

BirdOPrey5 09-20-2012 10:19 PM

Yes and no... It would be fairly easy to count the characters in the plugin but with BBCode you could have 1000 characters in the signature but it only displays a short 100 of them as actual text.

You could filter out the BBCode but it is more difficult.

Worse is that in my experience it's images which take up a lot of room, not so much text, and there is no way to check the size of the image each time it is loaded.

There was a thread somewhere here on a mod or template edit that allowed for a max signature height in pixels, and anything longer than that it would show a scrollbar so it didn't take up the whole page.

Here is the link actually: https://vborg.vbsupport.ru/showthrea...68#post2085268

Gord Lacey 09-21-2012 12:53 PM

Thanks Joe, I saw that mod the other day as well.

Would you be able to share the count to count the characters? I realize the BBCode can change what's displayed, but I'm still interested in how to do it. I don't allow graphics in the signatures, so that's not a problem.

BirdOPrey5 09-21-2012 08:17 PM

In a plugin on the postbit_display_complete hook the signature text (already converted to HTML) is stored in:

Code:

$post['signature']
Using the PHP function to count the length of a string you can get the number of characters:

PHP Code:

$siglength strlen($post['signature']); 

So you can do whatever you want-

PHP Code:

$siglength strlen($post['signature']);
if (
$siglength 500)
{
  
$post['bigsig'] = 1;
}
else
{
  
$post['bigsig'] = 0;


Then in the template instead of:

Code:

<vb:if condition="$post[posts] < 10">
You make it:

Code:

<vb:if condition="$post['bigsig']">
And the mod will only run if the signature has over 500 characters.

Gord Lacey 09-25-2012 08:31 PM

Awesome, thank you so much. I just edited the "postbit_display_complete" file (took a bit for a Newbie to find it), changed the code, and all is working perfectly!


All times are GMT. The time now is 04:44 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.01239 seconds
  • Memory Usage 1,814KB
  • 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
  • (10)bbcode_code_printable
  • (3)bbcode_php_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (17)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