Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Ohjelmointiputkassa toimivaa ignore-plugaria?

Sivun loppuun

Grez [06.12.2009 02:25:16]

#

Tietääkö kukaan toimiiko joku Firefoxin tai Google Chromen ignore-plugari luotettavasti ja helposti ohjelmointiputkassa? Onko kellään valmista konffia mihinkään?

Siis laajasti käytössä oleville foorumisoftillehan näitä löytyy helpommin, mutta ohjelmointiputkan softaa ei käsittääkseni ole missään muualla käytössä, joten ainoat jotka moisen mahdollisesti on konffannut löytynee täältä..

Niin, tietysti homma toimisi helpommin ja tehokkaammin, jos suoraan foorumisoftassa olisi ignore-toiminto. Mutta sellaista lie turha toivoa?

Macro [06.12.2009 10:49:16]

#

Kuvittelenko vaan, vai tiedänkö mihin tarvitset tätä? :D

Grez [06.12.2009 10:55:05]

#

Macro kirjoitti:

Kuvittelenko vaan, vai tiedänkö mihin tarvitset tätä? :D

Voihan se olla, että arvasit. Tarvitsisin sitä mielenterveyteni säilyttämiseen.

Sen verran voin vielä tarkentaa, että moinen on ollut kyllä mielessä jo pidemmän aikaa, ainakin puoli vuotta. Ja tilanne on koko ajan asteittain pahentunut.

Chiman [06.12.2009 14:22:52]

#

Ellei kenelläkään ole jo valmiina moista, helpoin tietämäni tapa on käyttää Firefoxia ja siihen Greasemonkey-lisäosaa, jonka avulla nettisivuja voi manipuloida javascriptillä.

Tässä pikaisesti tekemäni raakile, jota saa vapaasti muokata ja levittää. Jatkokehitysidea halukkaalle: piilotettu viesti korvautuu linkillä, joka tuo viestin takaisin näkyviin.

Ohjeet:
- asenna Firefoxiisi Greasemonkey
- tallenna alla oleva skripti koneellesi tiedostoon op_ignore.user.js
- muokkaa koodiin usersToIgnore-kohtaan estettävät käyttäjät
- avaa kyseinen tiedosto Firefoxilla: Tiedosto -> Avaa tiedosto..., asenna ja käytä (Greasemonkey tunnistaa skriptin omakseen .user.js-päätteestä)
- selaimen alareunasta apinan kuvasta voit säätää skriptin toimintaa

// ==UserScript==
// @name           Ohjelmointiputka ignore
// @namespace      opscripts
// @description    Removes posts of specified authors in a thread
// @include        https://www.ohjelmointiputka.net/keskustelu/aihe.php*
// ==/UserScript==

var usersToIgnore = ["estettavanKayttajanNimimerkki", "toinenEstettava"];

function ignoreComment(commentNode) {
    commentAs = commentNode.getElementsByTagName('a');

    if (commentAs.length >= 2) {
        for (var i = 0; i < usersToIgnore.length; i++) {
            if (commentAs[1].innerHTML == usersToIgnore[i]) {
                return true;
            }
        }
    }

    return false;
}

// find all comment headers
var allComments = document.evaluate(
    "//tr[@class='taulukkoyla']",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);

for (i = 0; i < allComments.snapshotLength; i++) {
    thisComment = allComments.snapshotItem(i);
    if (ignoreComment(thisComment)) {
        thisComment.innerHTML = "<td colspan='3'>(poistettu)</td>"; // comment header
        thisComment.nextSibling.style.display = "None"; // comment content
    }
}

Grez [06.12.2009 15:20:14]

#

Näyttää mahtavan yksinkertaiselta. Tuotahan voisi jopa jatkokehittää jossain välissä jos olisi aikaa. Mulla on jo valmiiksi jatkokehitysideakin. Käyttäjän vieressä tai vaikka sen nimeä oikealla klikkaamalla voisi olla linkki ignoraamiseen ja sitten ignoraus voisi olla voimassa esim. 3 kk, jos vaikka myöhemmin parantaa tapansa. Saisihan sen sitten 3kk päästä helposti uudelleen ignoreen.

Macro [06.12.2009 15:39:35]

#

Oli ihan pakko itsekkin testata, hyvältä näyttää.

vehkis91 [06.12.2009 16:50:47]

#

Pitää kyllä testata, että viittii jatkossa käydä täällä...

Milo [06.12.2009 17:26:49]

#

Kiitos. Toimii hyvin. Jotenkin ei itellä käynyt mielessä Greasemonkey.

tsuriga [06.12.2009 20:45:53]

#

EDIT: PEELO - Paradoksaalisen Eeppinen Estotoiminto Lokalisoituna Ohjelmointiputkaan
EDIT2: Vanha linkki poistettu

Chiman [06.12.2009 21:30:23]

#

Hienoa, kiitos!

Metabolix [06.12.2009 22:24:03]

#

Tässä on vaihtoehtoinen menetelmä, joka piilottaa kaikki viestit. Viestin pääsee lukemaan viemällä hiiren lähettäjärivin päälle. Koodi on CSS:ää ja toimii ainakin Fx 3.5:llä. (Ei ole aivan korrektia kaikilta osin.) Koodissa on Firefoxin tukema URL-valitsin, jolla sen saa rajattua keskusteluihin. Koodin saa helposti käyttöön Stylish-lisäosalla tai kirjoittamalla käyttäjän CSS-tiedostoon.

@-moz-document url-prefix("https://www.ohjelmointiputka.net/keskustelu/aihe.php") {
  table {
    border-collapse: separate;
    border-spacing: 0;
  }
  tr.taulukkoyla td {
    border: 1px solid white;
  }
  tr.taulukkoyla + tr {
    display: none;
  }
  tr.taulukkoyla:hover + tr, tr.taulukkoyla + tr:hover {
    display: block;
    position: absolute;
    margin-left: 2em;
    margin-top: -3px;
    border: 2px solid black;
    background-color: white;
  }
}

Grez [06.12.2009 22:57:08]

#

Kiitos avusta. Jos kuitenkin ymmärsin oikein, että tuo piilottaa kaikkien käyttäjien viestit, niin siitä ei ainakaan minulle ole mitään hyötyä.

Siis kyllähän minä itsekin osaan hypätä viestin yli jos satun muistamaan että kirjoittaja on ignoraamisen arvoinen. Ongelma tulee lähinnä siinä kun viikon parin päästä on unohtanut ja taas vastannut käyttäjälle ja vasta jossain kolmannen viestin kohdalla, kun v-käyrä on jo taivaissa, muistaa mistä käyttäjästä oli kysymys.

Metabolix [06.12.2009 23:21:40]

#

Siinä tapauksessa riittäisi myös yksinkertainen korostus:

a[href^="profiili.php"][href$="id=6298"] {
  color: red;
  text-decoration: line-through;
}

Mitäs näitä enää heittelemään, kun JS-ratkaisukin jo annettiin... Mutta ehkä joku joskus lukee ja oppii CSS:ää. :)

tsuriga [07.12.2009 21:12:33]

#

EDIT: PEELO - Paradoksaalisen Eeppinen Estotoiminto Lokalisoituna Ohjelmointiputkaan
EDIT2: Vanha linkki poistettu

zacura [08.12.2009 19:29:40]

#

Loistava skripti, kiitos siitä. Tässä tuo tsurigan skripti pienillä muutoksilla jotta toimii myös Operassa user-js:nä, testattu toimivaksi uusimmalla versiolla. En tosin ole testannut toimiiko enää greasemonkey:lla, mutta toivottavasti :P.

// ==UserScript==
// @name           Ohjelmointiputka ignore
// @namespace      opscripts
// @description    Adds cookie based ignore feature
// @include        https://www.ohjelmointiputka.net/keskustelu/aihe.php*
// @version        1.3.2
// @todo           Moderator compliance
// ==/UserScript==

/* Opera: turn this script on only for ohjelmointiputka.net/keskustelu/aihe.php */
if( location.hostname.indexOf('ohjelmointiputka.net') != -1 && location.pathname.indexOf('keskustelu/aihe.php') != -1) {

	/** CONFIG BEGIN */

	/* The length of ignores */
	var ignoreDays = 90;
	/* Your nickname */
	var self = '';

	/** FUNCTIONS BEGIN */

	/* Opera: unsafeWindow object */
	if (navigator.appName.indexOf('Opera') != -1) {
		var unsafeWindow = window;
	}

	// ECMAScript only
	const IGNOREADD    = 1;
	const IGNOREREMOVE = 2;
	const IGNORERESET  = 3;

	var controls = function() {
		return '<td align="right" width="0%">' + arguments[0] +
			'</td><td>' + arguments[1] + '</td>';
	};
	var toggleLink = function (text) {
		return '<a onclick="toggleComment(this);" ' +
			'style="text-decoration: underline;">' + text + '</a>';
	};
	var muteLink = function (operation, name) {
		return '<a onclick="setIgnoreCookie(' + operation + ', ' +
			'\'' + name + '\');" ' + 'style="text-decoration: underline;">' +
			((operation == IGNOREADD) ? 'Estä': 'Salli') + '</a>';
	};
	var commentOn =
		function (username, headerNode, quoteNode) {
			return '<td width="100%">' + headerNode + '</td>' +
				controls(
					toggleLink('Piilota'),
					quoteNode
				);
	};
	var commentOff =
		function (username, messageId) {
			return '<td width="100%" style="color: #666; ' +
				'font-style: italic; font-weight: bold;">' + '<a name="' +
				messageId + '"></a>' + username + '</td>' +
				controls(
					toggleLink('Näytä'),
					muteLink(IGNOREREMOVE, username)
				);
	};
	var messages = {};
	var ignores = {};

	/* Determines whether to ignore a comment */
	function toIgnore(commentNode) {
		commentAs = commentNode.getElementsByTagName('a');
		var author = '';

		if (commentAs.length >= 2) {
			author = commentAs[1].textContent;

			for (var username in ignores) {
				if (author === username) {
					// Parse message properties
					var messageId = commentAs[0].name;
					var headerNode = commentAs[0].parentNode.innerHTML;
					var quoteNode = commentAs[2].parentNode.innerHTML;

					messages[messageId] = {
						'username': username,
						'headerNode': headerNode,
						'quoteNode': quoteNode
					};

					return commentAs[2];
				}
			};
		}

		return author;
	}

	/* Reads all ignores from a cookie */
	function fetchignores() {
		var cookies = unescape(document.cookie);
		if (cookies.length > 0) {
			var ps = cookies.indexOf('ignored=') + 8;
			if (ps !== 7) {
				var pe = cookies.indexOf(';', ps) - 8;
				if (pe === -9) {
					pe = cookies.length;
				}
				var ignoreList = cookies.substr(ps, pe).split('|');

				var changed = false;
				ignoreList.forEach(function (ignore) {
					var pair = ignore.split(',');
					var username = pair[0];
					var exDate = pair[1];

					// See whether user's ignore is still on
					if (new Date() < exDate) {
						ignores[username] = exDate;
					} else {
						changed = true;
					}
				});

				// Reset cookie if some ignores were removed
				if (changed) {
					unsafeWindow.setIgnoreCookie(IGNORERESET);
				}
			}
		}
	}

	/* Sets ignore cookie */
	unsafeWindow.setIgnoreCookie = function (operation, name) {
		var exDate = new Date();
		exDate.setDate(exDate.getDate() + ignoreDays);

		if (operation === IGNOREADD) {
			ignores[name] = exDate.valueOf();
		} else if (operation === IGNOREREMOVE) {
			delete ignores[name];
		}

		var ignoreList = '';
		for (var username in ignores) {
			ignoreList += '|' + username + ',' + ignores[username];
		}
		ignoreList = ignoreList.substr(1);

		// Set cookie or delete it if there's no one on the ignore list
		document.cookie = 'ignored=' + escape(ignoreList) + ';expires=' +
			((ignoreList.length !== 0) ?
				exDate.toGMTString():
				'Thu, 01-Jan-1970 00:00:01 GMT');

		// Reload to see changes live
		if (operation !== IGNORERESET) {
			location.reload();
		}
	};

	/* Toggles comment visibility */
	unsafeWindow.toggleComment = function(a) {
		var commentHeader = a.parentNode.parentNode;
		var commentNode = commentHeader.nextSibling;

		// Get the id from the message's empty anchor tag
		var messageId = a.parentNode
			.previousSibling.firstChild.name;

		// Show
		if (commentNode.style.display === 'none') {
			commentHeader.innerHTML = commentOn(
				messages[messageId].username,
				messages[messageId].headerNode,
				messages[messageId].quoteNode
			);

			commentNode.style.display = 'block';
		} // Hide
		else {
			commentHeader.innerHTML = commentOff(
				messages[messageId].username,
				messageId
			);

			commentNode.style.display = 'none';
		}
	};

	function runIgnoreScript() {
		/** ACTION BEGIN */

		// list all ignored users
		fetchignores();

		// find all comment headers
		var allComments = document.evaluate(
			"//tr[@class='taulukkoyla']", document, null,
			XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

		/*
		 * Hide all ignored users' comments and
		 * add ignore links.
		 */
		for (var i = 0; i < allComments.snapshotLength; i++) {
			var comment = allComments.snapshotItem(i);
			var a = toIgnore(comment);
			//alert(a);
			// Hide ignored comment
			if (typeof a === 'object') {
				unsafeWindow.toggleComment(a);
			} // Add ignore link
			else if (a.length > 0 && a !== self) {
				comment.lastChild.innerHTML = muteLink(IGNOREADD, a);
			}
		}

	}


	if (navigator.appName.indexOf('Opera') != -1) {
		/* Opera needs this script to be run in onLoad */
		document.addEventListener('load', function(event) { runIgnoreScript(); }, false);
	}
	else {
		/* in Greasemonky just run it */
		runIgnoreScript();
	}

}

ByteMan [09.12.2009 15:39:00]

#

Pakko myöntää, että minulla ainakin oli aika rajoittunut kuva javascriptistä ennen tätä viestiketjua =D


edit:: kokeilinpa nyt niin itsensä estäminen on ainoa keino pästä muokkaamaan lähettämäänsä viestiä. liekö bugi vai feature? =P

edit2:: ja jostain kumman syystä tsurigan nimen kohdalla ei ole estä-linkkiä =D

Chiman [09.12.2009 15:44:24]

#

ByteMan kirjoitti:

edit2:: ja jostain kumman syystä tsurigan nimen kohdalla ei ole estä-linkkiä =D

Muuta koodissa self-muuttujan sisältö. (Itse jouduin muuttamaan pari versiota sitten kyseisen muuttujan ownNick-nimiseksi, muuten heitti virheilmoitusta siitä rivistä, eikä koodi toiminut. Kenties jokin nimikonflikti.)

Metabolix [09.12.2009 16:09:04]

#

Jos tuohon vielä ehdotus kelpaa, niin oman nimimerkin voisi yrittää kaivaa sivulta (<p id="kirj">).

Milo [09.12.2009 18:30:55]

#

e.parentNode.previousSibling.firstChild is null
rivillä 281, 1.5.1 versiolla.

rivit 280-284

// Get the id from the message's empty anchor tag @ FIX!!
var messageId = e.parentNode
    .previousSibling
    .firstChild
    .name;

zacura [09.12.2009 19:05:54]

#

tsuriga kirjoitti:

Operassa toimii kirjautuneena ihan hyvin, mutta iskee kirjautumattomana virhettä ensimmäisen estetyn viestin kohdalla. Sain toimimaan Operassa vain ottamalla eventListenerin pois ja ajamalla ronskisti suoraan. Johtusko siitä, että Opera tunnistaa .user.js-skriptit Greasemonkey-skripteiksi ja ajaa ne ymmärtääkseni muutenkin vasta kun sivu on valmis?

Vaikuttaa siltä että user-js skripteille ei ole mitään kiinteätä suoritusajankohtaa, ainakin itsellä tuon uusimman toiminta vaihteli. Välillä toimi oikeen, mutta useimmiten kaatuu rivillä 182 koska sideBar on null. Avaamalla Operan kehitystyökalun, skripti yllättäen toimiikin (enemmän javascriptia ajettavana, sivu kerkeää latautua ennen user-js:n ajoa?).

Mutta eventListenerin lisäämisen jälkeen koodi toimii oikein ainakin kirjautuneena, se miksi homma kaatuu kun skripti on käytössä kirjautumatta ei vielä selvinnyt.

Myös self muuttuja piti nimetä uudestaan kuten Chiman jo totesikin.

tsuriga: Millä Operan versiolla testasit tuota? Itsellä Opera/9.80 (Windows NT 6.1; U; fi) Presto/2.2.15 Version/10.10, ajattelin jos tuossa user-js:n käsittelyssä on jokin asia muuttunut.

edit: Paitsi että eihän tuo toiminutkaan, estä linkit kyllä ilemstyvät ja niiden klikkaaminen kyllä lisää käyttäjän estolistalle, mutta viestiti jäävät näkyviin ja estetyn käyttäjän jälkeen tulevat estä-linkit häviävät.

tsuriga [10.12.2009 11:31:20]

#

Joo ei sitä aina näköjään muista ottaa omia konffeja (omaa nickiä) pois. Testailin samalla Operan versiolla, UA:ssa ei muuta eroa kuin Windowsin versio ja kieli.

http://www.opera.com/browser/tutorials/userjs/examples/#greasemonkey:

To tell Opera that a script file uses Greasemonkey notation, the name of the file containing the script must end with .user.js. --
They are executed when the page completes loading, after creating the DOM for the page, but before running any onload handlers that have been defined.

Ottaapa tuosta nyt selvän jos kerran toiminta vaihtelee mielivaltaisesti :S.

Tuossa Milon pastessa lukeekin jo valmiiksi "FIX" kommentissa ;). Kyse on siis siitä, että toggle-funkkari pitää opettaa etsimään tuo messageId yhdellä ja samalla säännöllä, oltiinpa sitten kirjautuneita tai ei. Self jäi kummittelemaan ko Error Consoleen ei tullu siitä mitään erhettä, muutan seuraavaan versioon.

Ps. Tästäpä oppia, kuinka versionhallintaa ei kannata hoitaa :), ei nimittäin löydy itteltä noita vanhoja versioita ollenkaan.

zacura [10.12.2009 11:56:15]

#

tsuriga kirjoitti:

Joo ei sitä aina näköjään muista ottaa omia konffeja (omaa nickiä) pois. Testailin samalla Operan versiolla, UA:ssa ei muuta eroa kuin Windowsin versio ja kieli.

Hehe, kyllähän tuo ajetaan oikeassa kohdassa vasta sivun latauduttua, olin typottanut tuon user.js:n ;-). Mutta tuo Milon mainitsema virhe tulee Operalla riippumatta siitä onko kirjautuneena vai ei.

Milo [12.12.2009 19:16:58]

#

Tulikettu-3.5:lla ja rasva-apinalla tuli testattua. Siinähän sanottiin, että toimii rasva-apinalla ja oopperalla.

Merri [13.12.2009 10:55:06]

#

Varsin harmittavaa, että idiootit netissä on loppumaton luonnonvara. Ei sillä ettenkö itse olisi joskus käyttäytynyt tyhmästi, mutta sekin on ollut yleensä mielentilasta kiinni. Jatkuvalla syötöllä peeloilu on aina oma asiansa. Täten ehdotan laajennoksen suomenkieliseksi nimeksi Peeloa.

Grez [13.12.2009 16:38:58]

#

tsuriga kirjoitti:

Ps. Tästäpä oppia, kuinka versionhallintaa ei kannata hoitaa :), ei nimittäin löydy itteltä noita vanhoja versioita ollenkaan.

Ei muuta kuin projekti pystyyn jonnekin Sourceforgeen tms. :D

jalski [13.12.2009 16:49:42]

#

tsuriga kirjoitti:

Ps. Tästäpä oppia, kuinka versionhallintaa ei kannata hoitaa :), ei nimittäin löydy itteltä noita vanhoja versioita ollenkaan.

Windows alustalla työskentelevälle suosittelen tutustumaan Reliable Softwaren Code Co-Op versionhallinta ohjelmaan: http://www.relisoft.com/co_op/index.htm

Itse käytän tuota omissa Inferno projekteissani. On edullinen ja hyvä!

Kray [13.12.2009 17:09:45]

#

Miksi maksaa suljetusta windows-riippuvaisesta kun on olemassa git, subversion ja useita muita avoimia laajalti suurissa avoimen lähdekoodin projekteissa koeteltuja järjestelmiä?

jalski [13.12.2009 17:44:30]

#

Kray kirjoitti:

Miksi maksaa suljetusta windows-riippuvaisesta kun on olemassa git, subversion ja useita muita avoimia laajalti suurissa avoimen lähdekoodin projekteissa koeteltuja järjestelmiä?

Kuinka moni noista toimii ilman käyttöön omistettua palvelinta, sallii käyttöönoton minuutissa ilman asetusten säätämistä, tarjoaa visuaalisen differin, yksinkertaisen käyttöliittymän, wikin, ei tarvitse erillistä tietokantaa bugitietokannan ylläpitoon, yms ... ?

Miksi nykyään kaiken pitää olla ilmaista? Itse olen valmis maksamaan hyvästä ohjelmasta, mikä antaa mahdollisuuden keskittyä työntekoon turhan säätämisen sijaan.

Kray [13.12.2009 18:07:44]

#

jalski kirjoitti:

toimii ilman käyttöön omistettua palvelinta

git

jalski kirjoitti:

sallii käyttöönoton minuutissa ilman asetusten säätämistä

git

jalski kirjoitti:

tarjoaa visuaalisen differin, yksinkertaisen käyttöliittymän, wikin, ei tarvitse erillistä tietokantaa bugitietokannan ylläpitoon, yms ... ?

Näin vinkkinä, kyseessä ei ole versiohallinnan tehtävä. Monille näille löytyy kuitenkin helppokäyttöisiä frontendejä tarjoamaan tälläista toiminnallisuutta, tai käytetään hostauspalvelua, esim. sourceforge tai github.

Grez [13.12.2009 18:36:35]

#

Toi jalskin mainitseman firman sivuilla oleva vertailutaulukko on muuten siitä hassu että siellä ei ole esim. Gitiä tai Mercurialia. Herää hieman epäilys siitä, että vertailuun otetuista olisi jätetty mahdollisesti firman tuotteelle pärjäävät pois. Muutenkin hieman koomista pistää ominaisuudeksi "ilmainen tuki" kun vertailaan maksuttomiin softiin. Vai antaako noi tukea "ilmaista tukea" tuotteelleen vaikka sitä ei ostaisikaan...

Sinänsä olen kyllä samaa mieltä Jalskin kanssa, että usein löytyy toimiva ratkaisu jolla säästää aikaa ja vaivaa.

jalski [13.12.2009 18:51:09]

#

Kray kirjoitti:

jalski kirjoitti:

tarjoaa visuaalisen differin, yksinkertaisen käyttöliittymän, wikin, ei tarvitse erillistä tietokantaa bugitietokannan ylläpitoon, yms ... ?

Näin vinkkinä, kyseessä ei ole versiohallinnan tehtävä. Monille näille löytyy kuitenkin helppokäyttöisiä frontendejä tarjoamaan tälläista toiminnallisuutta, tai käytetään hostauspalvelua, esim. sourceforge tai github.

Minulle tuo on kyllä versionhallinnan tehtävä. Eikös versionhallinnan tehtävänä nimenomaan ole kehitysversioiden ja niissä tapahtuneiden muutosten helppo ylläpito?

Eikä tuota git:tiä nyt ihan minuutissa käyttöönoteta, lukematta ensin manuaalia ja opettelematta komentoja.

Grez kirjoitti:

Toi jalskin mainitseman firman sivuilla oleva vertailutaulukko on muuten siitä hassu että siellä ei ole esim. Gitiä tai Mercurialia. Herää hieman epäilys siitä, että vertailuun otetuista olisi jätetty mahdollisesti firman tuotteelle pärjäävät pois. Muutenkin hieman koomista pistää ominaisuudeksi "ilmainen tuki" kun vertailaan maksuttomiin softiin. Vai antaako noi tukea "ilmaista tukea" tuotteelleen vaikka sitä ei ostaisikaan...

Luulenpa, että Mercurial ja Git eivät ole vielä olleet käytössä, kun tuo vertailutaulukko joskus on tehty.

tsuriga [16.12.2009 12:32:37]

#

Päivitys versioon 1.6.0. Toimii nyt sekä Greasemonkeyllä että Operalla sekä kirjautuneena että kirjautumattomana. Lisätty mahdollisuus määritellä ignoren kestot tapauskohtaisesti, korjattu keksien vanhenemisajan määrittelyä ymv. Kirjautuneen käyttäjän nimi haetaan nyt sivulta. Nimi vaihdettu Merrin ehdotuksesta. Asennus: Poista vanha (GM ei ylikirjoita vanhaa nimivaihdoksen takia) ja asenna uusi. GM osaa napata skriptin suoraan tuosta tai projektisivujen linkeistä, projektisivulla on ladattavissa myös paketit, joissa on lisenssi ja README mukana. Tulevia muutoksia README:ssä.

P.S. Ideoita otetaan vastaan, varsinkin käyttöliittymämockuppeja kakkosversion ikoneita ajatellen.
P.P.S. En ole suunnitellut toteuttavani ideaa estettyjen käyttäjien aloittamien ketjujen piilottamisesta. Olisko se haluttukin ominaisuus?
P.P.P.S. Servulta löytyy myös versio 1.6.1, johon laitoin yksinkertaisen latausruudun (body piilotetaan latauksen ajaksi, jää vain taustaväri). Vaatii joko user.css:n muokkausta tai Stylish-lisäosan, CSS stylishiin löytyy tiedostosta peelo_1.6.1.user.css.

EDIT2: Vanhat linkit poistettu

tsuriga [19.12.2009 12:21:08]

#

Eipähän taas hurmoksessa muistunut, että keksithän eivät suinkaan ole yksityisiä tietovarastoja, vaan ne lähetetään aivan turhaan serverille jokaisen sivulatauksen (tässä /keskustelu/). Poistan kakkosversiossa keksit käytöstä, joten Opera-versiossa estettävät käyttäjät pitää jatkossa syöttää käsin, kunnes Opera tukee samanlaista offline-tallennusta kuin GM (GM_setValue).

Plugarin käyttöaste ei varmaan ole mitää järettömän trafiikin luovaa luokkaa, mutta suosittelen päivittämään kakkosversioon heti kunhan saan moisen pyöräytettyä ulos.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta