Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Гость 2poy_nyasha

ЮЗЕРСКРИПТ ДЛЯ ПРОДОТЫ! prealpha verion!

Рекомендованные сообщения

Гость 2poy_nyasha

что умеет:

1) скрывать разные нинужные разделы типа анимэ

2) каждый может настроить цвета продоты под себя

3) фикс небольшой пдшки

4) игнор юзеров

по дефолту все отключенно, цвета чтобы заработали их надо сменить, и поставить галочку - пользователькие цвета

 

чтобы изменения вступили в силу - обновите страницу

 

ну в общем разберетесь

 

ЭТО НЕ ОКОНЧАТЕЛЬНЫЙ ВАРИАНТ, А ЛИШЬ ВТОРОЙ ДЕНЬ РАБОТЫ

 

 

Показать код

// ==UserScript==
// @id			 prodota.ru-6d20399e-3ffa-4d4c-81d5-13b768c33cd9@scriptish
// @name		   pd userscript
// @version		1.0
// @namespace	  
// @author		
// @description	
// @include		http://prodota.ru/forum*
// @run-at		 document-end
// ==/UserScript==

(function (window, undefined) {

if (typeof unsafeWindow != undefined)
	var w = unsafeWindow;
else return;

if (w.self != w.top) return;

var DEBUG	 = false,
	DomainUrl = DEBUG? 'http://localhost' : 'http://mobile-gta.ru';

var $$	= w.$$,
	$	 = w.$,
	$body = $('footer_utilities');

var Options = {
	"Скрывать разделы": [
		'<input id="hidden_menu_1" type="checkbox"><label for="hidden_menu_1">Раздел Дота2</label>',
		'<input id="hidden_menu_2" type="checkbox"><label for="hidden_menu_2">Раздел Дота</label>',
		'<input id="hidden_menu_3" type="checkbox"><label for="hidden_menu_3">Раздел LoL и Hon</label>',
		'<input id="hidden_menu_4" type="checkbox"><label for="hidden_menu_4">Раздел Анимэ</label>',
		'<input id="hidden_menu_5" type="checkbox"><label for="hidden_menu_5">Раздел Мафия</label>',
		'<input id="hidden_menu_6" type="checkbox"><label for="hidden_menu_6">Раздел Спорт</label>',
	],
	"Настройки дизайна": [
		'<input id="hidden_trash_1" type="checkbox"><label for="hidden_trash_1">Скрывать мусор</label>',
		'<input id="css_user_1" type="checkbox"><label for="css_bgimage_1">Пользовательские цвета</label>',
	],
	"Настройки цветов": [
		'123456 необх. изменить!',
		'<input class="color" id="css_color_1" value="123456"> - цвет фона',
		'<input class="color" id="css_color_6" value="123456"> - цвет текста',
		'<input class="color" id="css_color_2" value="123456"> - цвет ссылок',
		'<input class="color" id="css_color_3" value="123456"> - ссылка при навед.',
		'<input class="color" id="css_color_4" value="123456"> - цвет фона центра',
		'<input class="color" id="css_color_5" value="123456"> - цвет фона постов',
		'<input class="color" id="css_color_7" value="123456"> - цвет бордюров',
	],
	"Список игнорируемых": [
		'id, через зпт, без прбл!',
		'<textarea id="ignore_users_1"></textarea>',
		'<button id="save_ignore">сохр. игнор-х</button>'
	]
}

var User = {
	id: getUserId($('user_link').getAttribute('href')),
	nick: $('user_link').innerHTML.replace(/ \&nbsp\;\<(.*)\>/, ''),
}

///////////////////////////////////////////////////
/* /////////////////// HELPERS ///////////////// */
///////////////////////////////////////////////////


function load(type, url) {
	if(type == 'css') {
		$$('head')[0].innerHTML += '<link rel="stylesheet" type="text/css" href="'+url+'">';
	}
	if(type == 'js') {
		var id = 'ID'+Math.ceil(Math.random()*155502);
		var script = document.createElement('script');
		script.id  = id;
		script.src = url;
		$$('head')[0].appendChild(script);
	}
}

function toggle(el) {
	var display = el.style.display || '';
	if(display == 'none')
		Menu.block.style.display = 'block';
	else
		Menu.block.style.display = 'none';
}
function getUserId(url) {
	return url.match(/\?showuser=([0-9]+)/)[1] || 0;
}

function loadMainElements() {
	load('css', DomainUrl+'/pd/style.css');
	load('js', DomainUrl+'/pd/jscolor.js');
}
function removeFromArr(arr) {
	var what, a = arguments, L = a.length, ax;
	while (L > 1 && arr.length) {
		what = a[--L];
		while ((ax= arr.indexOf(what)) !== -1) {
			arr.splice(ax, 1);
		}
	}
	return arr;
}

///////////////////////////////////////////////////
/* /////////////////// STORE /////////////////// */
///////////////////////////////////////////////////

var Store = {
	_set: function(to, val, noJson) {
		val = noJson ? val : JSON.stringify(val);
		localStorage.setItem(to, val);
	},
	_get: function(name, noJson) {
		var value = localStorage.getItem(name) || "[]";
		value = noJson ? value : JSON.parse(value);
		return value;
	},
	_append: function(to, val) {
		var value = this._get(to) || [];
		removeFromArr(value, val);
		value.push(val);
		this._set(to, value);
	},
	_remove: function(from, val) {
		var arr = this._get(from) || [];
		arr = removeFromArr(arr, val);
		this._set(from, arr);
	},
	save: {
		checkbox: function(val) {
			Store._append('checkbox', val);
		},
		colors: function(id, val) {
			var colors = Store._get('colors') || [];
			for(var i=0; i < colors.length; i++) {
				if(id == colors[i].split('=')[0])
					colors[i] = "";
			};
			colors.push(id+'='+val);
			Store._set('colors', colors);
		}
	},
	remove: {
		checkbox: function(val) {
			Store._remove('checkbox', val);
		},
		colors: function(id, val) {
			Store._remove('colors', id+'='+val);
		}
	}
}

///////////////////////////////////////////////////
/* //////////////////// MENU /////////////////// */
///////////////////////////////////////////////////

var Menu = {
	init: function(){
		$body.innerHTML += this.button;
		$body.innerHTML += this.block;

		this.button = $('menuButton');
		this.block  = $('menuWindow');

		this.button.addEventListener('click', Menu.toggle, false);
	},
	block: (function(){
		var code = '<div id="menuWindow" style="display:none">';

		for(title in Options) {
			code += '<div><h2>' + title + '</h2><ul>';
			for(var i=0, m=Options[title]; i < m.length; i++) {
				code += '<li>' + m[i] + '</li>';
			}
			code += '</ul></div>';
		}

		return code + '</div>';
	})(),

	button: '<div id="menuButton">Настройки</div>',

	toggle: function(e){
		toggle(Menu.block);
	}
}

///////////////////////////////////////////////////
/* ////////////////// SETTINGS ///////////////// */
///////////////////////////////////////////////////

var Settings = {
	init: function(){
		this.elements.checkbox = $$('#menuWindow input[type="checkbox"]');
		this.elements.colors   = $$('#menuWindow .color');

		this.elements.checkbox.each(function(el){
			el.addEventListener('click', function(e){
				Settings.ev.checkbox(e.target);
			})
		})

		this.elements.colors.each(function(el){
			el.onchange = function(e){
				Store.save.colors(e.target.id, e.target.value);
			}
		})

		$('save_ignore').addEventListener('click', function(){
			Actions.ignore.save();
		})

		this.setChecked();
		this.setColors();
		this.setIgnored();
	},
	elements: {},
	ev: {
		checkbox: function(el){
			if(el.checked)
				Store.save.checkbox(el.id);
			else
				Store.remove.checkbox(el.id);
		}
	},
	setChecked: function(){
		var checked = Store._get('checkbox');
		if(!checked || !checked.length) return;
		for(var i = 0; i < checked.length; i++) {
			var el = $(checked[i]);
			if(!el) continue;
			el.checked = true;
		}
	},
	setColors: function() {
		var colors = Store._get('colors');
		if(!colors || !colors.length) return;
		for (var i = colors.length - 1; i >= 0; i--) {
			var el = $(colors[i].split('=')[0]);
			if(!el) continue;
			el.value = colors[i].split('=')[1];
		};
	},
	setIgnored: function(){
		$('ignore_users_1').innerHTML = Store._get('userignore').join(',') || '';
	}
}

///////////////////////////////////////////////////
/* ////////////////// SETTINGS ///////////////// */
///////////////////////////////////////////////////

var Actions = {
	init: function(){
		this.start.checkbox();
		this.ignore.start();
	},
	start: {
		checkbox: function(){
			var checked = Store._get('checkbox');
			if(!checked || !checked.length) return;
			for(var i = 0; i < checked.length; i++) {
				var hideMenu = checked[i].match(/hidden\_menu\_([0-9]+)/) || false;
				var hideTrash = checked[i].match(/hidden\_trash\_([0-9]+)/) || false;
				var userStyles = checked[i].match(/css\_user\_([0-9]+)/) || false;

				if(hideMenu[1])
					Actions.hide.elementMenu(hideMenu[1]);
				else if(hideTrash)
					Actions.hide.trash();
				else if(userStyles)
					Actions.css.userStyles();
			}
		}
	},
	hide: {
		users: function(){},

		elementMenu: function(n){
			var els = {
				1: $('category_7'),	 //dota2
				2: $('category_3'),	 //dota1
				3: $('category_6'),	 //lol hon
				4: $$('table[summary*="Таверна"] tr')[4],   //anime mat' ego
				5: $$('table[summary*="Таверна"] tr')[8],   //mafia
				6: $$('table[summary*="Таверна"] tr')[5],   //sport dlya petuhov
			}
			if(!els[n]) return;
			els[n].outerHTML = null;
		},

		trash: function(){
			load('css', DomainUrl+'/pd/hideTrash.css');
		}
	},
	css: {
		userStyles: function(){
			var colors = Store._get('colors'),
				css	= '<style>',
				names  = {
					css_color_1: {
						els: 'body, html, #primary_nav .active a, .pagination *',
						value: 'background',
					},
					css_color_2: {
						els: 'a, #ips_Posts span a, #ips_Posts a span, #ips_Posts .bbc_spoiler > span',
						value: 'color'
					},
					css_color_3: {
						els: 'a:hover, #ips_Posts span a:hover, #ips_Posts a:hover span',
						value: 'color'
					},
					css_color_4: {
						els: '#content, .main_width, .unread, .post_block h3,.unread .altrow, .unread.altrow, .citation, .blockquote, #primary_nav',
						value: 'background'
					},
					css_color_5: {
						els: '.ipsBox, .post_block, .ipsBox_container, .maintitle',
						value: 'background'
					},
					css_color_6: {
						els: '#ips_Posts div, #ips_Posts span, #ips_Posts p',
						value: 'color'
					},
					css_color_7: {
						els: '*',
						value: 'border-color'
					},
				}
			if(!colors || !colors.length) return;
			for (var i = colors.length - 1; i >= 0; i--) {
				var val = colors[i].split('='),
					a   = names[val[0]];
				if(!val[1] || !a) continue;
				css += a.els + '{'+a.value+':#'+val[1]+' !important;}'
			};
			$$('head')[0].innerHTML += css+'</style>';
		}
	},
	ignore: {
		save: function(){
			var val = $('ignore_users_1').value;
			console.log(val)
			val = val.split(',');
			Store._set('userignore', val);
		},
		user: function(user) {
			var els = $$('.post_wrap [hovercard-id="'+user+'"]');
			if(!els || !els.length) return;
			els.each(function(el){
				el.parentNode.parentNode.parentNode.parentNode.outerHTML = null;
			});
		},
		start: function() {
			var users = Store._get('userignore');
			if(!users) return;
			for(var i=0, l=users.length;i<l;i++){
				Actions.ignore.user(users[i])
			}
		}
	}
}


///////////////////////////////////////////////////
/* //////////////////// INIT /////////////////// */
///////////////////////////////////////////////////


loadMainElements();
Menu.init();
Settings.init();
Actions.init();
console.log('Привет, ' + User.nick + '. Твой id = ' + User.id);


})(window);

[/HIDE]

 

 

Как ставить сами найдете, тыщу раз обсуждали

 

тестилось только на фф, хром тоже должен работать

post-49039-0-86065800-1355597530_thumb.png

post-49039-0-24602400-1355597545_thumb.png


Изменено пользователем 2poy_nyasha

Поделиться сообщением


Ссылка на сообщение

только за основу возьми тот скрипт старый из стайлиша, который я юзаю)


0BdKg2e.png

Скрытый текст

 

Цитата

посоны

я джуса забанил

мне пиздос?

Цитата

xHjcvkA.gif

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

думаю сделать полностью настраиваемый дизайн

 

ну тупо разбить на блоки код, и покдлючать их опционально

Поделиться сообщением


Ссылка на сообщение

Думаю это здорово! Главное не скрывать мои посты, в новом творенииbig109.gif


Не имеешь инстаграмма - обоссаное быдло с завода

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

ты уебан, тебя первым скрою, и буду проверять на изменение кода в каждой функции

Поделиться сообщением


Ссылка на сообщение

тогда идея не взлетитbig170.gif

 

ты делаешь для кого-то и тут же навязываешь свое особо ценное мнение - что пользователю смотреть, а что нетk07017.gif


Не имеешь инстаграмма - обоссаное быдло с завода

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

И чо?

Поделиться сообщением


Ссылка на сообщение

что значит и че? если не ошибаюсь, у тебя в компактной версии дизайна пд верхние разделы скрыты. зачем?


Не имеешь инстаграмма - обоссаное быдло с завода

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

и чо

Поделиться сообщением


Ссылка на сообщение

Проблема блять открыть эти разделы :avtorklif: Разнылся нытик.

ну не все же такие крутые программисты, как ты

Не имеешь инстаграмма - обоссаное быдло с завода

Поделиться сообщением


Ссылка на сообщение

А что, есть смысл от скрипта, который не скрывает верхние разделы?

Поделиться сообщением


Ссылка на сообщение
(изменено)

вообще я к чему веду, если ты сделаешь что-нибудь нужное без подводных камней аля скрытие чего-нибудь или КОГО-НИБУДЬ, то будет волне годно для массового потребления965777.gif

 

А что, есть смысл от скрипта, который не скрывает верхние разделы?

ну если скрипт изначально предназначен для другой задачи967838.gif
Изменено пользователем Mark.00F.ka

Не имеешь инстаграмма - обоссаное быдло с завода

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

тебя я скрою энивей

 

а к милашке спаю подпишу что он няша

Поделиться сообщением


Ссылка на сообщение

ты скачала придумай что-нибудь стоящее, скрыватель


Не имеешь инстаграмма - обоссаное быдло с завода

Поделиться сообщением


Ссылка на сообщение

Буду юзать, если заебись сделаешь.

 

А так дам по 3 дня морковке и тебе, за срач. Заебали.


 

 

prodota

 

 

Мой Кирюша

 

 

phoca_thumb_l_lam_5743.jpg

 

 

Quote

Едем на дачу - KachoOk в придачу!

Rus6YImZrQI.jpg

 

 

 

 

aka KachoOk (R.I.P)

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

Тебе скрою банилку, тоже заебал, рилиbig109.gif

Поделиться сообщением


Ссылка на сообщение
(изменено)

я же тебе писал на счет надстраиваемого интерфейса, в плане какой цвет захотел такой втыкнул :rickroll:

 

картинка с палитрой из инета :trollface: качество :banned: , а так на скорую руку идея

post-34252-0-72308400-1355143600_thumb.jpg


Изменено пользователем RoBiLL

 

5U_B_R62-84.jpg

 

Время онлайн

6д 6ч 6м 6с :palevo:

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

я же тебе писал на счет надстраиваемого интерфейса, в плане какой цвет захотел такой втыкнул :rickroll:

 

картинка с палитрой из инета :trollface: качество :banned: , а так на скорую руку идея

подумаю над этим, в принципе реализовать не трудно, но надо ли

Поделиться сообщением


Ссылка на сообщение

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

×
×
  • Создать...