В этой статья я покажу 3 полезные фитчи, которые улучшат комфортное провождение в чате.
Когда в чате меняешь размер приватного окна, после обновления страницы или после выхода и входа в чат все стает на прежние места и приходится все настраивать заново. Сейчас мы сделаем чтобы фреймы запоминали свой размер, а точнее браузер пользователя запоминал размер фреймов который он выбрал, и будут его помнить не только после обновления, а в течении месяца, или пока не почистить куки браузера.


Что мы получаем:
1. Запоминание размера привата (при изменении его стрелочками)
2. Запоминание размера фрейма со смайлами (если включено растягивание фреймов в чате)
3. Убираем баг, когда админ нажимает на стрелочку изменения размера, уезжают админские/шаманские кнопки в нижнем фрейме


Установка:
1. Размер привата
Открываем designes/ваш дизайн/menu_private.php 
Функцию
var fr_size = 30; 
function change_size(side)
{
 if(side==1) fr_size-=4;
 if(side==2) fr_size = 30;
 if(side==0) fr_size+=4;
 if(fr_size <10) { fr_size=10; }
 if(fr_size >90) { fr_size=90; }
 var po = null;
 po = parent.document.getElementById('pvt_frameset');
 if(!po) po= parent.document.all('pvt_frameset');
 if(po) po.rows = "*,"+ fr_size + "%, 60";
 else alert('You have too exotic old browser to support =)');
}

Заменяем на
var fr_size = <?php echo (!empty($_COOKIE['size_privat'])) ? $_COOKIE['size_privat'] : 30; ?>; 
function change_size(side) {
     if(side==1) fr_size-=4;
     if(side==2) fr_size = 30;
     if(side==0) fr_size+=4;
     if(fr_size <10) {
         fr_size=10;
     }
     if(fr_size >90) {
         fr_size=90;
     }
     var po = null;
     po = parent.document.getElementById('pvt_frameset');
     if (!po) {
         po = parent.document.all('pvt_frameset');
     }
     if (po) {
         po.rows = "*," + fr_size + "%, " + po.rows.split(',')[2];
         setCookie('size_privat', fr_size, 3600 * 24 * 30);
     } else {
         alert('You have too exotic old browser to support =)');
     }
}

function setCookie(name, value, expires, path, domain, secure) {
    expires instanceof Date ? expires = expires.toGMTString() : typeof(expires) == 'number' && (expires = (new Date(+(new Date) + expires * 1e3)).toGMTString());
    var r = [name + "=" + escape(value)], s, i;
    for(i in s = {expires: expires, path: path, domain: domain}){
        s[i] && r.push(i + "=" + s[i]);
    }
    return secure && r.push("secure"), document.cookie = r.join(";"), true;

}

Здесь мы сразу и пофиксили баг с заежанием админских кнопок



Открываем designes/ваш дизайн/voc.php 
перед
if($cu_array[USER_CLASS] > 0 or $cu_array[USER_CUSTOMCLASS] != 0) {
вставляем
// clever frames 
$privat_size = (!empty($_COOKIE['size_privat'])) ? $_COOKIE['size_privat'] : $ex[3][1];
$privat_size = (int) $privat_size;
if ($privat_size > 100 || $privat_size < 5) {
    $privat_size = 30;
}
// clever frames end

В строке
<frameset name="pvt_frameset" rows="*, 30%, 80" bordercolor="#3D4976" framespacing="3">
30% заменяем на 
<?=$privat_size;?>%
так же и в следующей строке 
<frameset name="pvt_frameset" rows="*, 30%, 60" bordercolor="#3D4976" framespacing="3">
Приват у нас стал умным, теперь если нужем умный фрейм со смайлами,

(показан пример для мода smiles 2.0) в этом же файле перед
<frameset cols="*,<?php if(!$cu_array[USER_REDUCETRAFFIC]) { ?>50, <?php } ?>200,0" bordercolor="#3D4976" framespacing="1" frameborder="YES" scrolling=auto>
вставляем
 <?php 
// clever frames (с) skriptoff mvoc.ru
$size_smiles = (!empty($_COOKIE['size_smiles'])) ? $_COOKIE['size_smiles'] : 50;
if ($size_smiles < 50) $size_smiles = 50;

// clever frames end
?>

где 50 это стандартный размер окна со смайлами, можно заменить на любое другое значение

строку
<frameset cols="*,<?php if(!$cu_array[USER_REDUCETRAFFIC]) { ?>50, <?php } ?>200,0" bordercolor="#3D4976" framespacing="1" frameborder="YES" scrolling=auto>
заменяем на
<frameset cols="*,<?php if(!$cu_array[USER_REDUCETRAFFIC]) { echo $size_smiles . ','; } ?>200,0" bordercolor="#3D4976" framespacing="1" frameborder="YES" scrolling=auto>


Открываем designes/ваш дизайн/pictures.php 
после
<? if ($DISPLAY == 'frame'): ?> 
<script type="text/javascript">

вставляем
/* clever frimes (c) Scriptoff */ 
window.onresize = function() {
    setCookie('size_smiles', window.innerWidth, 3600 * 24 * 30);
}
function setCookie(name, value, expires, path, domain, secure) {
    expires instanceof Date ? expires = expires.toGMTString() : typeof(expires) == 'number' && (expires = (new Date(+(new Date) + expires * 1e3)).toGMTString());
    var r = [name + "=" + escape(value)], s, i;
    for(i in s = {expires: expires, path: path, domain: domain}){
        s[i] && r.push(i + "=" + s[i]);
    }
    return secure && r.push("secure"), document.cookie = r.join(";"), true;
}
/* clever frimes end */



Готово, фреймы стали умными, нижний фрейм перестал прыгать после изменения размера привата, 



Автор поста: ,
    Просмотров: 1672     Создан: 25 мая. 2016 в 18:30