|
Сворачивание(скрытие категорий на форуме)
|
|
| Stribog | Отредактировал Stribog - Пятница, 05 Декабря 2008, 12:59 Дата: 05 Декабря 2008, 12:58 | Сообщение # 1 | ● ● ● ● ● 6 сообщений Статус: Offline | Code /* +++++++++++++++++++++++++++++++++++++++++++ ++ ToggleForums For UcoZ ++ ++ Author: Alexeenko Ivan aka Vanofuture ++ ++ Do not remove or edit lines above! ++ +++++++++++++++++++++++++++++++++++++++++++ */
plus='http://src.ucoz.net/img/icon/plus.png'; // Картинка плюса minus='http://src.ucoz.net/img/icon/minus.png'; // Картинка минуса
function setForums(){ addIcons(); if(getCookie('toggleForums')){ td=document.getElementById('forumbody').getElementsByTagName('td'); forums=getCookie('toggleForums'); forums=forums.split('-'); for(f=0;f<forums.length-1;f++){ toggleForum(td[forums[f]].getElementsByTagName('img')[0]);}}}
function addIcons(){ td=document.getElementById('forumbody').getElementsByTagName('td'); for(i=0;i<td.length;i++){ if(td[i].className=='gTableTop'){ td[i].innerHTML='<img src="'+minus+'" border="0" align="absmiddle" style="cursor:pointer;" onclick="preToggleForum(this,'+i+');" /> '+td[i].innerHTML;}}}
function preToggleForum(obj,num){ toggleForum(obj); if(getCookie('toggleForums')){ toggledForums=getCookie('toggleForums'); hiddenForums=toggledForums; forumNums=toggledForums.split('-'); for(i=0;i<forumNums.length;i++){ if(forumNums[i]==num){ hiddenForums=hiddenForums.replace(num+'-',''); delCookie('toggleForums'); if(hiddenForums!=''){setCookie('toggleForums',hiddenForums,'Mon, 01-Jan-2090 00:00:00 GMT','/forum/');}}} if(hiddenForums==toggledForums){ delCookie('toggleForums'); setCookie('toggleForums',toggledForums+num+'-','Mon, 01-Jan-2090 00:00:00 GMT','/forum/');}} else{setCookie('toggleForums',num+'-','Mon, 01-Jan-2090 00:00:00 GMT','/forum/');}}
function toggleForum(obj){ tr=obj.parentNode.parentNode.parentNode.getElementsByTagName('tr'); for(i=1;i<tr.length;i++){ tr[i].style.display=tr[i].style.display=='none'?'':'none';} obj.src=obj.src==minus?plus:minus;}
function setCookie(name,value,expires,path,domain,secure) { document.cookie=name+'='+escape(value)+ ((expires)?'; expires='+expires:'') + ((path)?'; path='+path:'')+ ((domain)?'; domain='+domain:'') + ((secure)?'; secure':'');}
function getCookie(name){ var prefix=name+'=' var cookieStartIndex=document.cookie.indexOf(prefix); if(cookieStartIndex==-1) return null; var cookieEndIndex=document.cookie.indexOf(';',cookieStartIndex+prefix.length) if(cookieEndIndex==-1) cookieEndIndex=document.cookie.length; return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));}
function delCookie(name,path,domain) { if(getCookie(name)){ document.cookie=name+'='+ ((path)?'; path=' + path : '')+ ((domain)?'; domain=' + domain : '') + '; expires=Thu, 01-Jan-70 00:00:01 GMT'}}
setForums(); // Запускаем это всё =) Нашел такой скрипт, скрывать разделы форума, на подобие форумов с поддержкой php. возле названий разделов будет кнопка (+, -) с помощью которых можно свернуть раздел. Он должен работать с куками, чтобы запомнить что было закрыто, но почему то он не запоминает этого? В чем проблема? Поддержка куков в браузере работает нормально... | | |
|
| cucYa | Дата: 05 Декабря 2008, 14:37 | Сообщение # 2 |  ● ● ● ● ● Совращенный мальчик.7317 сообщений Статус: Offline | У меня всё работает, возможно ваш браузер сам удаляет печенки при закрытие  | | |
|
| psyangel | Дата: 05 Декабря 2008, 15:07 | Сообщение # 3 |  ● ● ● ● ● 131 сообщение Статус: Offline | Все нормально работает. | | |
|
| Stribog | Дата: 05 Декабря 2008, 18:59 | Сообщение # 4 | ● ● ● ● ● 6 сообщений Статус: Offline | я вот тоже не знаю. посмотрите если несложно сайт http://hack-portal.ucoz.ru/forum P.s. не реклама | | |
|
| cucYa | Дата: 05 Декабря 2008, 19:06 | Сообщение # 5 |  ● ● ● ● ● Совращенный мальчик.7317 сообщений Статус: Offline | worknikg fine. | | |
|
| Безымянный | Дата: 05 Декабря 2008, 23:46 | Сообщение # 6 |  ● ● ● ● ● 248 сообщений Статус: Offline | А куда вставлять - то? [ Сообщение от пользователя с низкой репутацией. Показать ] | | |
|
| mob_dp | Дата: 06 Декабря 2008, 01:31 | Сообщение # 7 | ● ● ● ● ● 4112 сообщений Статус: Offline | У меня кстати чет после смены дизайна не пашет скрипт, сам ничего не пойму Уже на хонлайн обратился, там вроде молчат  | | |
|
| cucYa | Дата: 06 Декабря 2008, 01:37 | Сообщение # 8 |  ● ● ● ● ● Совращенный мальчик.7317 сообщений Статус: Offline | | | |
|
| Lexanom | Дата: 06 Декабря 2008, 14:31 | Сообщение # 9 |  ● ● ● ● ● 125 сообщений Статус: Offline | а что нужно сделать, чтобы картинка отображалась после текста а не перед ним? Code function addIcons(){ td=document.getElementById('forumbody').getElementsByTagName('td'); for(i=0;i<td.length;i++){ if(td[i].className=='gTableTop'){ td[i].innerHTML='<img src="'+minus+'" border="0" align="absmiddle" style="cursor:pointer;" onclick="preToggleForum(this,'+i+');" /> '+td[i].innerHTML;}}} | | |
|
| Gaara | Дата: 06 Декабря 2008, 18:30 | Сообщение # 10 |  ● ● ● ● ● 1312 сообщений Статус: Offline | Quote (Lexanom) td[i].innerHTML='<img src="'+minus+'" border="0" align="absmiddle" style="cursor:pointer;" onclick="preToggleForum(this,'+i+');" /> '+td[i].innerHTML; Code td[i].innerHTML=td[i].innerHTML + '<img src="'+minus+'" border="0" align="absmiddle" style="cursor:pointer;" onclick="preToggleForum(this,'+i+');" /> '; | | |
|
| Безымянный | Дата: 06 Декабря 2008, 18:42 | Сообщение # 11 |  ● ● ● ● ● 248 сообщений Статус: Offline | Ну куда вставлять - то.. Я запутался...[ Сообщение от пользователя с низкой репутацией. Показать ] | | |
|
| mob_dp | Дата: 06 Декабря 2008, 19:07 | Сообщение # 12 | ● ● ● ● ● 4112 сообщений Статус: Offline | Gaara, я кажись сам делал так как ты написал, и, если я не ошибаюсь, кнопка сворачивания появляется сразу после заголовка раздела, а не в правом конце области с заголовком. | | |
|
| Lexanom | Отредактировал Lexanom - Воскресенье, 07 Декабря 2008, 06:45 Дата: 07 Декабря 2008, 06:41 | Сообщение # 13 |  ● ● ● ● ● 125 сообщений Статус: Offline | Gaara, не, не то. Я сам додумался, когда вспомнил про фокус обтекания текстом картинок вот так: Quote <img src="'+minus+'" align=right border="0" align="absmiddle" style="cursor:pointer;" onclick="preToggleForum(this,'+i+');" /> цветов ненадо Теперь второй вопрос: мне надо чтобы при нажатии на кнопку параметр display менялся НЕ на none, а на hidden. Соответсвенно, при повтороном нажатии на visible (точно не помню, но вроде так). Дополнил нубским кодом Code function toggleForum(obj){ var kt=true if (kt==true){ tr=obj.parentNode.parentNode.parentNode.getElementsByTagName('tr'); for(i=1;i<tr.length;i++){ tr[i].style.display=tr[i].style.display=='hidden'?'':'hidden';}kt=false;} else { tr=obj.parentNode.parentNode.parentNode.getElementsByTagName('tr'); for(i=1;i<tr.length;i++){ tr[i].style.display=tr[i].style.display=='visible'?'':'visible';} kt=true;} obj.src=obj.src==minus?plus:minus;} не получилось... ЗЫ. не спрашивайте меня, зачем мне это нужно, и не стоит утверждать, что "none" на законном месте. Я и сам это понимаю, но мне нужен именно hidden, это крайне важно | | |
|
| Бармалей | Дата: 07 Декабря 2008, 08:20 | Сообщение # 14 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | Quote (Lexanom) display менялся НЕ на none, а на hidden у свойства display нет таких значений. Такими значениями обладает свойство visiblity
 | | |
|
| Lexanom | Дата: 07 Декабря 2008, 09:39 | Сообщение # 15 |  ● ● ● ● ● 125 сообщений Статус: Offline | Quote (Бармалей) у свойства display нет таких значений тем не менее я много раз, успешно, пользовался им. Кажется... Например, скрипт Code function toggleForum(obj){ tr=obj.parentNode.parentNode.parentNode.getElementsByTagName('tr'); for(i=1;i<tr.length;i++){ tr[i].style.display=tr[i].style.display=='hidden'?'':'none';} отработал именно так, как мне нужно. tr[i].style.display=tr[i].style.display=='none'?'':'none';} срабатывает несовсем верно. Притом, я не совсем понимаю, как работает первый скрипт, и нашел параметр методом тыка. Но при этом получается, что tr[i].style.display=tr[i].style.display=='hidden'?'':'none';} скрывает так как мне нужно, но назад не разворачивает. В то и проблема. | | |
|
| mob_dp | Дата: 07 Декабря 2008, 17:15 | Сообщение # 16 | ● ● ● ● ● 4112 сообщений Статус: Offline | | | |
|
| Lexanom | Отредактировал Lexanom - Понедельник, 08 Декабря 2008, 09:16 Дата: 08 Декабря 2008, 08:47 | Сообщение # 17 |  ● ● ● ● ● 125 сообщений Статус: Offline | Прочитал, спасибо. Однако, теперь мне совершенно неясно, в чем назначение первого "none" в строке Code tr[i].style.display=tr[i].style.display=='none'?'':'none';} И чего я не понимаю - если оставить скрипт таким как он есть сейчас - он работает немного не так, как мне нужно. Когда я меняю первое none на любую чушь, будь то block или hidden он работает как надо, т.е. скрывает все правильно, но назад уже не показывает Дело в том, что в некоторых разделах у меня уже есть скрытые форумы. Когда же я нажимаю на иконку скрытия, он скрывает не скрытые, а те, что были скрыты - наоборот, показывает. Как это обойти? | | |
|
| Vanofuture | Дата: 08 Декабря 2008, 11:07 | Сообщение # 18 |  ● ● ● ● ● Все админы едят апельсины 1650 сообщений Статус: Offline | Quote (Lexanom) Дело в том, что в некоторых разделах у меня уже есть скрытые форумы. Когда же я нажимаю на иконку скрытия, он скрывает не скрытые, а те, что были скрыты - наоборот, показывает. Как это обойти? Тут надо переписать первый и заставить его указывать скрытые таким путём форумы в массив, а в этом добавить проверку и если они совпадают, то не скрывать. | | |
|
| Lexanom | Дата: 08 Декабря 2008, 15:52 | Сообщение # 19 |  ● ● ● ● ● 125 сообщений Статус: Offline | Очень интересно. +1, пожалуй. Можно подробнее ( я не силен в Js\jQ) | | |
|
| mob_dp | Дата: 08 Декабря 2008, 15:53 | Сообщение # 20 | ● ● ● ● ● 4112 сообщений Статус: Offline | Lexanom, нельзя. Все предельно расписано. | | |
|