<id>
Like 4 YaBB2612
</id>

<version>
0.5
</version>

<mod info>
For YaBB 2.6.12

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

Instructions:

Apply the mod and upload (in ASCII mode):

Admin/ModList.pm

Sources/Display.pm
Sources/MessageIndex.pm
Sources/Post.pm
Sources/SubList.pm
Sources/Subs.pm
Sources/System.pm
Templates/default/Display.template
Templates/default/MessageIndex.template
yabbfiles/Templates/Forum/default.css

From the zip package upload (in ASCII mode):
Languages/Mods/English/Like.lng
Sources/Mods/Like.pm

From the zip package upload (in Binary mode):

yabbfiles/ModImages/like1.png
yabbfiles/ModImages/likenot1.png
yabbfiles/ModImages/likes.png

</mod info>

<author>
Carsten
</author>

<homepage>
yabbforumsoftware.com/YaBB.pl
</homepage>


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

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

<add before>
    $like_mod = "Like_4_YaBB2612|Carsten, updated to 2.6.12 by Dandello|This mod adds a members 'Like' button to topics.|0.5|03/20/2016";
    push @installed_mods, $like_mod;
</add before>

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

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

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

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

<add before>
## Like 4 YaBB Mod ##
    $likecnt = 0;
    $ilike = 0;
    $likeimg = 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>~;
    }
    foreach(split /,/xsm, ${$viewnum}{'like'}) {
        if($_ eq $username && $username ne 'Guest') {
            $likeimg = qq~<a href="$scripturl?action=likedec;thread=$viewnum">$dislikebutton</a>~;
            $ilike++;
        }
        $likecnt++;
    }
    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~;
        }
    }
    $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>
    $display_template =~ s/{yabb views}/ $tmpviews /egsm;
</search for>

<add after>
    $display_template =~ s/{yabb likes}/$tmplikes/gsm;
    $display_template =~ s/{yabb likeimage}/$likeimg/gsm;
</add after>

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

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

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

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

<add after>

        @likes = split /,/xsm, ${$mnum}{'like'};
        $likes = @likes;
        $txtlike = NumberFormat($likes);
        $altlike = $txtlike;
        $altlike .= $likes > 1 ? qq~ $like_txt{'likemembers'}~ : qq~ $like_txt{'likemember'}~;
        $altlike .= $likes > 1 ? qq~ $like_txt{'liketopic'}~ : qq~ $like_txt{'liketopics'}~;
        $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>

        if ( $accept_permalink == 1 ) {
</search for>

<add before>
        $tempbar =~ s/{yabb likes}/$likers/egsm;
</add before>

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

<search for>
        my @tag =
          qw(board replies views lastposter lastpostdate threadstatus repliers);
</search for>

<add after>
        push @tag, 'like';
</add after>

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

<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 ($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>

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

<search for>
    elsif ( $job eq 'decpost' ) {
        ${$updatethread}{'replies'}--;

    }
</search for>

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

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

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

<search for>
        my @tag =
          qw(board replies views lastposter lastpostdate threadstatus repliers);
</search for>

<add after>
        push @tag, 'like';
</add after>


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

<search for>
                {yabb threadimage} {yabb threadurl} ($display_txt{'641'} {yabb views} $display_txt{'642'})
</search for>

<replace>
                <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>
</replace>

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

<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>
../../yabbfiles/Templates/Forum/default.css
</edit file>

<search for>
.off-color { color: #ccc;}
</search for>

<add after>

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