[Đóng góp] Skin PunYCT edited from Pelikan [backup template]

  Bài viết hay nhất1
Skin namePelikan
Developed byTu Vil Amigo
Color SchemeBlue/Gray
CSS Optimizations
Template Modifications
Copyrighthttp://dzinerstudio.com
Edited by tonetone17/1/2015
 





Skin: https://www.dropbox.com/s/wktjfs9zfl0zdjn/yeucotuong-actual-20150117.bbtheme?dl=1
Template: https://www.dropbox.com/s/o0iohh5v8352p3j/punbb.1421484313.yeucotuong.forumvi.com.zip?dl=1


 Thống kê 5 cột DEVs có thêm slide gallery

Đặt vị trí widgets


Hiệu chỉnh Recent Topic:



JS:

Index & Sub avatar: In the home page & In the sub forums (Hiển thị avatar ở index và sub forums)

Code:
$(function(){
        if(!window.localStorage) return;
        // Default Avatar
        var default_avatar= 'http://illiweb.com/fa/invision/pp-blank-thumb.png';
        // Cache time here 24 h * 60 m * 60 s * 1000 ms of one day
        var caching_time= 24*60*60*1000;
        // Cache time when error 60 s * 1000 ms therefore one minute
        var caching_error= 60*1000;
        var set_avatar= function(id) {
        $('.mini_ava.member'+id).html('<img src="'+get_avatar(id)+'" />');
        };
        var get_avatar= function(id) {
        if(localStorage.getItem('t_ava'+id) < +new Date - caching_time || (localStorage.getItem('d_ava'+id)==default_avatar && localStorage.getItem('t_ava'+id) < +new Date - caching_error))
        {
        localStorage.setItem('d_ava'+id, default_avatar);
        $.get('/u'+id, function (d){
        localStorage.setItem('t_ava'+id,+new Date);
        localStorage.setItem('d_ava'+id, $('#profile-advanced-right .module:first div img:first,.forumline td.row1.gensmall:first > img, .frm-set.profile-view.left dd img,dl.left-box.details:first dd img, .row1 b .gen:first img, .real_avatar img',d).first().attr('src')||default_avatar);
        set_avatar(id);
        });
        }
        return localStorage.getItem('d_ava'+id);
        };
        var to_replace= {};
        $('dd.lastpost strong a.gensmall, .ipbtable tr td:last-child span strong a.gensmall, .table td.tcr strong a.gensmall, .forumline .row3.over strong a.gensmall').each(function(){
        to_replace[$(this).attr('href').substr(2)]= 1;
        $(this).closest('td,dd').prepend('<div class="mini_ava member'+$(this).attr('href').substr(2)+'"></div>');
        });
        for(i in to_replace)
        {
        set_avatar(i);
        };
        });



Toolbar avatar: In all the page (hiển thị avatar ở thanh toolbar
Code:
$(function(){$(function(){$('#fa_welcome').prepend('<span class="fa_avatar">'+_userdata.avatar+'</span>')})});

Who is read the topic: In the topic (thống kê thành viên và khách đang xem chủ đề)

Code:
/**
 * @CP_AddOn Addons for the Forumotion control panel
 * @copyright Copyright (C) 2014 JScript
 * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 * @engine 1.0b
 * @notes If your forum does not have the "CP_AddOn" module, you can manually change the variables values!
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mod>
   <header>
      <id>WhereIam</id>
      <title>Where I am?, Topic Active Users (Who is read this topic?)!</title>
      <version>1.10302014</version>
      <description>Shows the exact location where the user is currently!</description>
      <author>JScript</author>
      <author-notes>First Release (Beta tester only)!</author-notes>
      <license>GNU General Public License v2</license>
      <mod-version>1.0.0.9</mod-version>
   </header>
   <configuration>
      <level>Easy</level>
      <time>1 minute</time>
      <target-version>1.0b</target-version>
      <action type="input">
         <text>Users label:</text>
         <variable>topic_total_users</variable>
      </action>
      <action type="input">
         <text>Members label:</text>
         <variable>topic_total_members</variable>
      </action>
      <action type="input">
         <text>Guest label:</text>
         <variable>topic_total_visit</variable>
      </action>
      <action type="input">
         <text>Anonimous label:</text>
         <variable>topic_total_anoni</variable>
      </action>
      <action type="input">
         <text>Location label:</text>
         <variable>find_user_location</variable>
      </action>
      <action type="input">
         <text>Has portal?:</text>
         <variable>has_portal</variable>
      </action>
   </configuration>
</mod>
*/
// User variables **************************************************************************************
// #### If your forum does not have the "CP_AddOn" module, you can manually change the values. ####
topic_total_users = ' người đang xem chủ đề này:';
topic_total_members = ' Thành viên';
topic_total_visit = ' Khách,';
topic_total_anoni = ' Ẩn danh';
find_user_location = "Getting the user's location, wait...";
has_portal = 1; // #### If your forum does not have a "Portal", change the value to 0! ####
// ******************************************************************************************************
// System variables!
USERNAME = '';
USER_ID = 0;
//USERAVATAR = '';
SUPERMOD = 0;
TID = 0;
ACTION = 'add_field'; // 'configuration';
//
jQuery(function() {
    if (location.pathname.indexOf('/u') !== -1) {
        jQuery('dt:contains("WhereIam")').closest('dl').remove();
    } else if (location.pathname.indexOf('editprofile' !== -1)) {
      jQuery('label:contains("WhereIam"), span:contains("WhereIam"), dt:contains("WhereIam")').closest('dl, tr').remove();
    }
    if (_userdata.session_logged_in) {
        USERNAME = _userdata.username;
        USER_ID = _userdata.user_id;
        // USERAVATAR = jQuery(_userdata.avatar).attr('src');
        SUPERMOD = _userdata.user_level; // Is Admin/Mod ?
        TID = jQuery('a[href*="tid="]').attr('href').split('tid=')[1].split('&')[0]; //Get the var {TID}
    }
    // console.clear();
    console.log("/**************************************************************************");
    console.log("* Module: 'Where I am?' and 'Topic Active Users (Who is read this topic?)'!");
    console.log("* Description: Shows the exact location where the user is currently.");
    console.log("* Author: Made and Optimizations by JScript - 2013/07/12, 2014/10/13");
    console.log("* Version: First Release (Beta tester only)!");
    console.log("/**************************************************************************");
    console.log('USERNAME: ' + USERNAME);
    console.log("USER_ID: " + USER_ID);
    console.log("TID: " + TID);
    var oWereIam = {
        pathname: location.pathname,
        total_users: 0,
        oSubForum: '',
        oTarget: 0,
      sIndex: '/forum',
        oHtml: {
         phpbb2: '<!-- ACTIVE USERS -->' +
            '<tr>' +
            '    <td colspan="2" style="margin:0; padding: 0;">' +
            '        <table width="100%" cellspacing="0" cellpadding="0" border="0">' +
            '            <tbody>' +
            '                <tr>' +
            '                    <td id="user-stats" class="gensmall" width="75%" valign="top" style="padding: 0px 10px 0.6em;">' +
            '                    </td>' +
            '                </tr>' +
            '            </tbody>' +
            '        </table>' +
            '    </td>' +
            '</tr>',
         phpbb3: '#### Has a very bad structure that becomes hard to define the html! ####',
            punbb: '<!-- ACTIVE USERS -->' +
                '<div class="main" id="active_users">' +
                '   <div class="main-content">' +
                '      <div id="user-stats"  style="padding: 0.6em 1em;">' +
                '      </div>' +
                '   </div>' +
                '</div>',
         invision: '<!-- ACTIVE USERS -->' +
            '<div class="borderwrap" id="active_users" style="margin-bottom: 5px;">' +
            '    <div class="bar clearfix">' +
            '        <div class="left rtl-inversion-left" id="user-stats">' +
            '        </div>' +
            '    </div>' +
            '</div>',
         content: '<!-- CONTENT -->' +
                '<h4><strong><span id="topic_total_users">0</span> ' + topic_total_users + '</strong></h4>' +
                '<p class="statistics_brief desc">' +
                '   <span id="topic_total_members">0</span> ' + topic_total_members + ', ' +
                '   <span id="topic_total_visit">0</span> ' + topic_total_visit + ' ' +
                '   <span id="topic_total_anoni">0</span> ' + topic_total_anoni +
                '</p><br>' +
                '<ul id="topic_list_users" class="ipsList_inline" style="padding-left: 0px ! important;"></ul>'
        }
    };
    if (_userdata.session_logged_in) {
        WhereIam() // Where I am?
    }
    if (oWereIam.pathname.indexOf('/t') !== -1) {
      /* Forum versions! */
      var phpBB2 = jQuery('#content-container table.forumline:last tbody > tr:eq(1)');
      var phpBB3 = jQuery('#main-content > div.h3:last');
      var punbb = jQuery('#pun-info');
      var invision = jQuery('#main-content .borderwrap:last');
      if (phpBB2.length) {
         jQuery(oWereIam.oHtml.phpbb2).insertBefore(phpBB2);
      } else if(phpBB3.length) {
         jQuery(oWereIam.oHtml.punbb).insertBefore(phpBB3);
      } else if(punbb.length) {
         jQuery(oWereIam.oHtml.punbb).insertBefore(punbb);
      } else if(invision.length) {
         jQuery(oWereIam.oHtml.invision).insertBefore(invision);
      };
      jQuery('#user-stats').html(oWereIam.oHtml.content);
      if (!has_portal) oWereIam.sIndex = '/';
        oWereIam.oSubForum = jQuery('.pun-crumbs.noprint a.nav[href^="/f"], #navstrip a.nav[href^="/f"], .pathname-box:first a.nav[href^="/f"], span.nav a.nav[href^="/f"]').attr('href');
        try {
            jQuery.get(oWereIam.oSubForum, function(data) {
            oWereIam.oTarget = jQuery('#stats > a, #info_open td[colspan="2"]:not(.catBottom) .gensmall a, #main-content > a[href^="/u"], .activeusers-box .row1 a', data);
            }).always(function() {
                if (oWereIam.oTarget.length !== 0) {
                    var guest = Math.floor(Math.random() * (5 - 0));
                    jQuery('#topic_total_visit').text(guest);
                    searchActiveUsers(oWereIam.oTarget, 0, oWereIam.oTarget.length, 0, guest);
                }/* else {
                    jQuery.get(oWereIam.sIndex, function(data) {
                        var oOnlineList = /(?:\b<br>([\s\S]*?)<br>)/
                            .exec(
                                jQuery('#onlinelist > p:not(.right)', data).html()
                            )[1];
                        var memDiv = jQuery('<div>').html(oOnlineList);
                        oWereIam.oTarget = memDiv.find('a');
                    }).always(function() {
                        if (oWereIam.oTarget.length !== 0) {
                            var guest = Math.floor(Math.random() * (5 - 0));
                            jQuery('#topic_total_visit').text(guest);
                            searchActiveUsers(oWereIam.oTarget, 0, oWereIam.oTarget.length, 0, guest);
                        }
                    });
                }*/
            });
        } catch (e) {
            /*jQuery.get(oWereIam.sIndex, function(data) {
                var oOnlineList = /(?:\b<br>([\s\S]*?)<br>)/
                    .exec(
                        jQuery('#onlinelist > p:not(.right)', data).html()
                    )[1];
                var memDiv = jQuery('<div>').html(oOnlineList);
                oWereIam.oTarget = memDiv.find('a');
            }).always(function() {
                if (oWereIam.oTarget.length !== 0) {
                    var guest = Math.floor(Math.random() * (5 - 0));
                    jQuery('#topic_total_visit').text(guest);
                    searchActiveUsers(oWereIam.oTarget, 0, oWereIam.oTarget.length, 0, guest);
                }
            });*/
        }
    }
    function searchActiveUsers(oTarget, start, len, index, guest) {
        if (index > 10) {
            return false
        }
        var oThis = jQuery(oTarget[index]),
            sHref = oThis.attr('href'),
            $JScript;
        if ((sHref !== undefined) || (sHref.length !== 0)) {
            var user_name = '<a href="' + sHref + '">' + oThis.html() + '</a>';
            jQuery.get(sHref, function(data) {
                var Field_Text = jQuery('dt:contains("WhereIam")', data).closest('dl').find('div.field_uneditable').text();
                try {
                    $JScript = JSON.parse(Field_Text.replace(/'/g, '"'));
                } catch (e) {
                    // console.log(e);
                }
                console.log(Field_Text);
            }).always(function() {
                try {
                    if ($JScript.path.url == oWereIam.pathname) {
                        if (oWereIam.total_users == 0) {
                            $('#topic_list_users').html('');
                            $('#topic_list_users').append(user_name);
                        } else {
                            $('#topic_list_users').append(', ' + user_name);
                        }
                        oWereIam.total_users++;
                        $('#topic_total_users').text(oWereIam.total_users + guest);
                        $('#topic_total_members').text(oWereIam.total_users);
                    }
                } catch (e) {
                    // console.log(e);
                }
                index++;
                try {
                    searchActiveUsers(oTarget, start, len, index, guest);
                } catch (e) {
                    // console.log(e);
                }
            });
        }
    }
});
function WhereIam() {
    jQuery.ajaxSetup({
        async: false
    });
    jQuery.get('/profile?mode=editprofile', function(data) {
        var found = 1;
      var Profile_Field_ID = jQuery('label:contains("WhereIam"), span:contains("WhereIam"), dt:contains("WhereIam")', data).closest('dl, tr').find('textarea').attr('id');
        console.log("Profile_Field_ID: " + Profile_Field_ID);
        if ((Profile_Field_ID == undefined) && (SUPERMOD == 1)) {
            jQuery.post("/admin/index.forum?part=users_groups&sub=users&mode=avatar_profil2&extended_admin=1&tid=" + TID, { /* <- Parameters! */
                /* Post action */
                action: ACTION,
                id: 0,
                type: 0,
                action: 'configuration_final',
                list_type_field: 2,
                field_name: 'WhereIam',
                field_desc: 'Where I am? - Made and Optimizations by JScript - 2013/07/12, 2014/10/13',
                field_oblig: 0,
                field_display_profil: 1,
                list_field_type_view: 0,
                list_auth_field_modo: 1,
                list_auth_field_himself: 1,
                list_field_view: -1,
                list_separator: 0,
                field_type_2_lng_max: 15000,
                submit: 1,
                field_type_11_max_before: 14,
                field_type_11_max_after: 6
            }).done(function() {
                console.log('Add profile field done!');
                jQuery.get('/profile?mode=editprofile', function(data) {
                    Profile_Field_ID = jQuery('label:contains("WhereIam"), span:contains("WhereIam"), dt:contains("WhereIam")', data).closest('dl, tr').find('textarea').attr('id');
                }).fail(function() {
                    console.log('Failed to get field Profile_Field_ID!');
                    found = 0;
                });
            }).fail(function() {
                console.log('Add profile field Fail!');
                found = 0;
            });
        }
        if (found) {
            var sTitle = jQuery('.pun-crumbs:first p strong:last').text();
            if ((sTitle == 'undefined') || (sTitle == '')) sTitle = location.pathname;
            var now = new Date;
            var $JScript = {
                appInfo: {
                    module: 'Where I am?',
                    description: 'Shows the exact location where the user is currently.',
                    author: 'JScript',
                    version: '1.00',
                    release: '2014/10/13'
                },
                userInfo: {
                    oscpu: navigator.oscpu,
                    appName: navigator.appName,
                    language: navigator.language,
                    userAgent: navigator.userAgent
                },
                path: {
                    title: sTitle,
                    url: location.pathname,
                    param: location.search,
                    state: '0',
                    time: now.getHours() + ":" + now.getMinutes(),
                    date: now.getDate() + "/" + now.getMonth() + "/" + now.getFullYear()
                }
            };
            jQuery.post("/ajax_profile.forum?jsoncallback=?", {
                id: Profile_Field_ID.substring(16, Profile_Field_ID.length),
                user: USER_ID,
                active: "1",
                content: '[["' + Profile_Field_ID + '", "' + JSON.stringify($JScript).replace(/"/g, "'") + '"]]',
                tid: TID
            }, function(data) {
                console.log("OK: ajax_profile, userID = " + USER_ID);
            }, "json").fail(function() {
                console.log("error: ajax_profile, userID = " + USER_ID);
            });
        }
    }).done(function() {
        // Done!!!
    }).fail(function() {
        console.log('Failed to get field Profile_Field_ID');
    });
    jQuery.ajaxSetup({
        async: true
    });
}

Login Redirect: in all the pages (Đăng nhập trực tiếp sau khi đăng ký)

Code:
var _0x2c7f=["\x73\x65\x73\x73\x69\x6F\x6E\x5F\x6C\x6F\x67\x67\x65\x64\x5F\x69\x6E","\x63\x6C\x69\x63\x6B","\x76\x61\x6C\x75\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65\x5F\x72\x65\x67","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x70\x61\x73\x73\x77\x6F\x72\x64\x5F\x72\x65\x67","\x74\x65\x78\x74\x75\x73\x65\x72","\x73\x65\x74\x49\x74\x65\x6D","\x74\x65\x78\x74\x70\x61\x73\x73","\x6F\x6E","\x23\x75\x63\x70\x20\x69\x6E\x70\x75\x74\x5B\x6E\x61\x6D\x65\x3D\x22\x73\x75\x62\x6D\x69\x74\x22\x5D","\x67\x65\x74\x49\x74\x65\x6D","\x2F\x6C\x6F\x67\x69\x6E","\x4C\x6F\x67\x69\x6E","\x70\x6F\x73\x74","\x6C\x6F\x61\x64","\x72\x65\x61\x64\x79"];jQuery(document)[_0x2c7f[16]](function (){if(_userdata[_0x2c7f[0]]===0){jQuery(_0x2c7f[10])[_0x2c7f[9]](_0x2c7f[1],function (){var _0x5f40x1=document[_0x2c7f[4]](_0x2c7f[3])[_0x2c7f[2]];var _0x5f40x2=document[_0x2c7f[4]](_0x2c7f[5])[_0x2c7f[2]];localStorage[_0x2c7f[7]](_0x2c7f[6],_0x5f40x1);localStorage[_0x2c7f[7]](_0x2c7f[8],_0x5f40x2);} );jQuery(window)[_0x2c7f[15]](function (){storedValueUser=localStorage[_0x2c7f[11]](_0x2c7f[6]);storedValuePass=localStorage[_0x2c7f[11]](_0x2c7f[8]);if(storedValueUser&&storedValuePass){var _0x5f40x3=storedValueUser;var _0x5f40x4=storedValuePass;} ;jQuery[_0x2c7f[14]](_0x2c7f[12],{username:_0x5f40x3,password:_0x5f40x4,login:_0x2c7f[13]});} );} ;} );

Limit views of guess: In all the page (Hạn chế số lần xem của khách, bắt phải đăng ký và đăng nhập để xem tiếp)

Code:
$(function(){
    themsg = "XIN CHÀO, CÓ VẺ NHƯ BẠN RẤT THÍCH TÌM HIỂU DIỄN ĐÀN YÊU CỜ TƯỚNG. NHƯNG BẠN CHƯA ĐĂNG KÝ TÀI KHOẢN. CHỈ MẤT 30 GIÂY ĐỂ HOÀN TẤT MỘT TÀI KHOẢN MIỄN PHÍ. LÀ MỘT THÀNH VIÊN CHÍNH THỨC BẠN ĐƯỢC QUYỀN SỬ DỤNG MỌI TIỆN ÍCH CỦA DIỄN ĐÀN. NẾU ĐÃ LÀ THÀNH VIÊN BẠN VUI LÒNG ĐĂNG NHẬP ĐỂ XEM TIẾP - NHẤN OK ĐỂ THAO TÁC TIẾP";
                var x = "/login /register";
            var y = x.split(" ");
        for (var i = 0; i < y.length; i++) {
              if (window.location.pathname == y[i]) return;  
        };


            if(_userdata.session_logged_in <= 0) {
            
                count = parseInt(my_getcookie("count")) || 0;
                if(count < 10){
                    my_setcookie("count",++count, 10000);
                
                }else{
                      alert(themsg);
                          var hhh = location.href;
            my_setcookie("mylasturl",hhh, 10000);
                  location.href='/login';
        };
            }else{
            lastur = my_getcookie("mylasturl");
            if (lastur == ""){}else{
                  location.href=lastur;
        my_setcookie("mylasturl","", 10000);
                };
            };
        });

Chúc các bạn vui vẻ!
  Bài viết hay nhất2
Thực sự là skin gốc đẹp hơn, skin này nhìn các phần không hợp với nhau
  Bài viết hay nhất3

@NCat wrote:Thực sự là skin gốc đẹp hơn, skin này nhìn các phần không hợp với nhau

Lần đầu làm nên mình còn nhiều điều cần học hỏi. Hy vọng các lần sau, mình sẽ có nhiều tiến bộ.
  Bài viết hay nhất4

@tonetone wrote:
Lần đầu làm nên mình còn nhiều điều cần học hỏi. Hy vọng các lần sau, mình sẽ có nhiều tiến bộ.

Có cần phải nói văn hoa như vậy không :))
Thì nói chung là lần đầu thì ai cũng vậy thôi :v skin đầu tiên mình làm cũng chẳng ra có bép gì hết :))
  Bài viết hay nhất5
up lại temp hộ mình với
  Bài viết hay nhất6
link die r bạn ơi
The author of this message was banned from the forum - See the message
  Bài viết hay nhất8
You cannot reply to topics in this forum