<id>
Like 4 YaBB 2.7.00
</id>

<version>
0.6
</version>

<mod info>
For YaBB 2.7.00

This mod adds a members 'Like' button to topics.

Instructions:

Install using YaBMod
</mod info>

<author>
Carsten
</author>

<homepage>
yabbforumsoftware.com/cgi-bin/yabb2/YaBB.pl
</homepage>


<edit file>
Admin/ModList.pm
</edit file>

<search for>
### END BOARDMOD ANCHOR ###
</search for>

<add before>
    my $like_mod = q~Like 4 YaBB 2.7.00|Carsten, updated to 2.7.00 by Dandello|This mod adds a members 'Like' button to topics.|0.7|01/09/2017~;
    push @installed_mods, $like_mod;
</add before>

<edit file>
Sources/Display.pm
</edit file>

<search for>
if (@displaypmmods) {
</search for>

<add before>
push @displaypmmods, 'Like';
</add before>

<search for>
## our Mod Hook ##
</search for>

<add before>
our (%like_txt);
</add before>

<search for>
load_language('FA');
</search for>

<add after>
load_language('Mods/Like');
</add after>

<search for>
    my $tool_sep = $usethread_tools ? '|||' : q{};
</search for>

<add before>
    my $likecnt       = 0;
    my $ilike         = 0;
    my $likeimg       = q{};
    my $likebutton    = q{};
    my $dislikebutton = q{};
    if ( $username ne 'Guest' ) {
        $likebutton =
qq~<span class="buttonleft cssbutton2" style="" title="$like_txt{'iliketopic'}"">
    <span class="buttonright cssbutton3">
        <span class="buttonimage cssbutton4" style="background-image: url($modimgurl/like1.png); background-position:center" id="like"></span>
    </span>
</span>~;
        $dislikebutton =
qq~<span class="buttonleft cssbutton2" style="" title="$like_txt{'disliketopic'}">
    <span class="buttonright cssbutton3">
        <span class="buttonimage cssbutton4" style="background-image: url($modimgurl/likenot1.png); background-position:center" id="like"></span>
    </span>
</span>~;
        $likeimg =
qq~<a href="$scripturl?action=likeinc;thread=$viewnum">$likebutton</a>~;
    }
    if ( ${$viewnum}{'like'} ) {
        foreach ( split /,/xsm, ${$viewnum}{'like'} ) {
            if ( $_ eq $username && $username ne 'Guest' ) {
                $likeimg =
qq~<a href="$scripturl?action=likedec;thread=$viewnum">$dislikebutton</a>~;
                $ilike++;
            }
            $likecnt++;
        }
    }
    my $likemembers = q{};
    my $like_topic  = q{};
    my $likes       = q{};
    if ( $likecnt > 0 ) {
        $likemembers = qq~ $like_txt{'likemember'}~;
        $like_topic  = qq~ $like_txt{'liketopics'}~;
        if ($ilike) {
            $likes = qq~ $like_txt{'youlike'}~;
            if ( $likecnt > 1 ) {
                $likecnt--;
                if ( $likecnt == 1 ) {
                    $likemembers = qq~ $like_txt{'likemember'}~;
                    $like_topic  = qq~ $like_txt{'liketopics'}~;
                }
                elsif ( $likecnt > 1 ) {
                    $likemembers = qq~ $like_txt{'likemembers'}~;
                    $like_topic  = qq~ $like_txt{'liketopic'}~;
                }
                $likes .=
                  qq~ $like_txt{'and'} $likecnt $likemembers$like_topic~;
            }
        }
        else {
            if ( $likecnt == 1 ) {
                $likemembers = qq~ $like_txt{'likemember'}~;
                $like_topic  = qq~ $like_txt{'liketopics'}~;
            }
            elsif ( $likecnt > 1 ) {
                $likemembers = qq~ $like_txt{'likemembers'}~;
                $like_topic  = qq~ $like_txt{'liketopic'}~;
            }
            $likes = qq~ $likecnt $likemembers$like_topic~;
        }
    }
    my $tmplikes =
qq~<a href="javascript:void(0);" onclick="var currentTop = document.documentElement.scrollTop; window.open('$scripturl?action=likelist;tobd=$viewnum;toscrl='+ currentTop +';','','status=no,height=300px,width=350,menubar=no,toolbar=no,top=50,left=50,scrollbars=no')" class="small" style="font-weight: normal;">$likes</a>~;
## End Like 4 YaBB Mod ##

</add before>

<search for>
## Mod Hook Display_temp ##
</search for>

<add before>
    $display_template =~ s/\Q{yabb likes}\E/$tmplikes/gxsm;
    $display_template =~ s/\Q{yabb likeimage}\E/$likeimg/gxsm;
</add before>

<edit file>
Sources/MessageIndex.pm
</edit file>

<search for>
if (@messageindexpmmods) {
</search for>

<add before>
push @messageindexpmmods, 'Like';
</add before>

<search for>
## our Mod Hook ##
</search for>

<add before>
our (%like_txt);
</add before>

<search for>
load_language('MessageIndex');
</search for>

<add after>
load_language('Mods/Like');
</add after>

<search for>
            $msublink =
qq~$maintxt{'758'}: '<a href="$scripturl?num=$moved_flag">$2</a>'<br /><span class="small">$moved_subject</span>~;
        }
</search for>

<add after>

        my @likes   = split /,/xsm, ${$mnum}{'like'};
        my $likes   = @likes;
        my $txtlike = number_format($likes);
        my $altlike = $txtlike;
        $altlike .=
          $likes > 1
          ? qq~ $like_txt{'likemembers'}~
          : qq~ $like_txt{'likemember'}~;
        $altlike .=
          $likes > 1
          ? qq~ $like_txt{'liketopic'}~
          : qq~ $like_txt{'liketopics'}~;
        my $likers =
            $likes
          ? $txtlike
          . qq~ <img src="$modimgurl/likes.png" alt="$altlike" title="$altlike" style="vertical-align: middle; cursor: pointer;" onclick="var currentTop = document.documentElement.scrollTop; window.open('$scripturl?action=likelist;tobd=$mnum;toboard=$currentboard;toscrl='+ currentTop +';','','status=no,height=300px,width=350,menubar=no,toolbar=no,top=50,left=50,scrollbars=no')" />~
          : '';

</add after>

<search for>
## End Tempbar Mod Hook ##
</search for>

<add before>
        $tempbar =~ s/\Q{yabb likes}\E/$likers/egxsm;
</add before>

<edit file>
Sources/SubList.pm
</edit file>

<search for>
if (@sublistpmmods) {
</search for>

<add before>
push @sublistpmmods, 'Like';
</add before>

<search for>
1;
</search for>

<add before>
$director{'likeinc'} = 'Mods/Like.pm&LikeInc';
$director{'likedec'} = 'Mods/Like.pm&LikeDec';
$director{'likelist'} = 'Mods/Like.pm&LikeList';
</add before>

<edit file>
Sources/Subs.pm
</edit file>

<search for>
if (@subspmmods) {
</search for>

<add before>
push @subspmmods, 'Like';
</add before>

<search for>
        if ($img_greybox) {
</search for>

<add before>
        if ( $INFO{'scrlto'} ) {
            $yysyntax_js .= qq~
    <script type="text/javascript">
        var oldTop = $INFO{'scrlto'};
        document.documentElement.scrollTop = oldTop;
    </script>
    ~;
        }

</add before>

<search for>
    my $newtime = ctbtime();
</search for>

<add before>
    push @ctb_tag, 'like';
</add before>

<edit file>
Sources/System.pm
</edit file>

<search for>
if (@systempmmods) {
</search for>

<add before>
push @systempmmods, 'Like';
</add before>

<search for>
    elsif ( $job eq 'decpost' ) {
        {
            no strict qw(refs);
            ${$updatethread}{'replies'}--;
        }
    }
</search for>

<add after>
    elsif ( $job eq 'inclike' ) {
        {
            no strict qw(refs);
            my @tmplike = split /,/xsm, ${$updatethread}{'like'} || q{};
            push @tmplike, $username;
            ${$updatethread}{'like'} = join q{,}, @tmplike;
        }
    }
    elsif ( $job eq 'declike' ) {
        {
            no strict qw(refs);
            my @likes = split /,/xsm, ${$updatethread}{'like'} || q{};
            my $likenum = 0;
            foreach (@likes) {
                if ( $_ eq $username ) { splice( @likes, $likenum, 1 ); last; }
                $likenum++;
            }
            ${$updatethread}{'like'} = join q{,}, @likes;
        }
    }
</add after>

<search for>
            @repliers = ();
</search for>

<add before>
            ${$updatethread}{'like'} = ${$updatethread}{'like'};
</add before>

<edit file>
Templates/default/Display.template
</edit file>

<search for>
if (@defaultdisplaymods) {
</search for>

<add before>
push @defaultdisplaymods, 'Like';
</add before>

<search for>
        <div class="padd_4px">{yabb threadimage} {yabb threadurl} ({yabb display_txt_641} {yabb views} {yabb display_txt_642})</div>
</search for>

<replace>
            <div class="padd_4px">
                <div style="float: left; width: 70%;">{yabb threadimage} {yabb threadurl} ($display_txt{'641'} {yabb views} $display_txt{'642'})</div>
                <div style="float: left; width: 29%; text-align: right; font-weight: normal; padding-right: 1%;">{yabb likes} &nbsp; {yabb likeimage}</div>
                <div class="clear"></div>
            </div>
</replace>

<edit file>
Templates/default/MessageIndex.template
</edit file>

<search for>
if (@defaultmessageindexmods) {
</search for>

<add before>
push @defaultmessageindexmods, 'Like';
</add before>

<search for>
                        <div style="float: left; width: 95%;">
</search for>

<replace>
                        <div style="float: left; width: 80%;">
</replace>

<search for>
                        <div style="float: left; width: 5%; text-align: center;">{yabb attachmenticon}</div>
</search for>

<add after>
                        <div style="float: right; width: 15%; text-align: right;">{yabb likes}</div>
                        <div class="clear"></div>
</add after>

<edit file>
<html>/Templates/Forum/default.css
</edit file>

<search for>
/* Mod Hook End*/
</search for>

<add before>
.likediv {
width:90%;
margin:0 auto;
padding:5px;
border: 1px solid #b1bdc9;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}

</add before>