Konwerter walut - szybszy sposób

Dyskusja o wszystkim co dotyczy Łowcygier.pl
Awatar użytkownika
Łowca
Posty: 55
Rejestracja: 14 lis 2013, o 02:19
Płeć: Mężczyzna
Podziękował: 0
Podziękowania: 2 razy
Kontakt:

Bruner pisze: A może to również byłaby pewna forma promocji samej strony Łowców i autora :)
Ok, dodany:
http://userscripts.org/scripts/show/186656

Ale jeśli ma to promować łowców, to trzeba go instalować i pisać komentarze, aby się dostał na stronę główną :twisted:
Awatar użytkownika
Łowca
Posty: 91
Rejestracja: 8 maja 2013, o 11:06
Płeć: Mężczyzna
Podziękował: 0
Podziękowania: 1 raz
Kontakt:

amistad18 pisze: Ale jeśli ma to promować łowców, to trzeba go instalować i pisać komentarze, aby się dostał na stronę główną :twisted:
To teraz tylko należy wypromować wśród użytkowników Łowców, aby instalowali i zostawiali swoje wpisy na stronie projektu. Chociaż obawiam się jednego, że za moment skrypt znajdzie się w silniku strony :gwizdany:
Awatar użytkownika
Webmaster
Posty: 565
Rejestracja: 6 lut 2013, o 12:12
Płeć: Mężczyzna
Lokalizacja: Lublin
Discord: rob006
Podziękował: 166 razy
Podziękowania: 205 razy
Kontakt:

Skrypt jest fajny, ale w tym momencie zawiera kilka założeń, które nie zawsze będą się sprawdzały. W jednym znaczniku strong mogą się znajdować różne waluty, które mogą być też różnie formatowane.
Tutaj lekko zmodyfikowana wersja na przykładzie brazylijskiej waluty:

Kod: Zaznacz cały

// ==UserScript==
// @name			Konwerter Walut
// @namespace		http://lowcygier.pl
// @description		Konwerter walut na łowcygier.pl
// @include			http://lowcygier.pl/promocje/*
// @exclude			http://lowcygier.pl/forum/*
// @exclude			http://lowcygier.pl/sledzokazje/*
// @downloadURL		http://www.amistad18.net/Konwerter_Walut.user.js
// @updateURL		http://www.amistad18.net/Konwerter_Walut.user.js
// @require			http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js
// @require			http://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.0/jquery.cookie.min.js
// @version			1.2
// ==/UserScript==

$(document).ready(function() {

	var convert_to_pln = function( usd_pln, eur_pln, gbp_pln, brl_pln ) {
		
		jQuery.fn.convert_temp = function() {
			var content = $(this).html();
			var content_object = $(this);
			if (content.indexOf("R$") >= 0){
				//$(this).addClass("real");
				var pattern = /((\d+\.\d{2}R\$)|(\d+\,\d{2}R\$)|(R\$\d+\.\d{2})|(R\$\d+\z\d{2})|(\d+R\$)|(R\$\d+))+/g;
				var matches = content.match(pattern);
				if(matches != null){
					matches.forEach(function(match){
						var number = match.replace("R$", "");
						var price = number.replace(",", ".");
						var price = parseFloat(price);
						var converted = price * brl_pln;
						var rounded = converted.toFixed(2);
						var pln_price = rounded.replace(".", ",");

					//	var output = output.replace(number, pln_price+"zł");
						var correct_price = number.replace(".", ",");
						content = content.replace(match, "<span>R\$</span>"+correct_price+"&nbsp;<span class=\"convert_price\">("+pln_price+"zł)</span>");
						content_object.html(content);
					});

				}
			}
			else if(content.indexOf("$") >= 0) {
				$(this).addClass("dollar");
				var pattern = /(\d+\.\d{2}\$)/;
				var matches = content.match(pattern);
				if(matches == null){
					var pattern = /(\d+\,\d{2}\$)/;
					var matches = content.match(pattern);
					if(matches == null){
						var pattern = /(\$\d+\.\d{2})/;
						var matches = content.match(pattern);
						if(matches == null){
							var pattern = /(\$\d+\,\d{2})/;
							var matches = content.match(pattern);
						    if(matches == null){
							    var pattern = /(\d+\$)/;
							    var matches = content.match(pattern);
								if(matches == null){
									var pattern = /(\$\d+)/;
									var matches = content.match(pattern);
								}
						    }
						}
					}
				}
				if(matches != null){
					var number = matches[0].replace("$", "");
					var price = number.replace(",", ".");
					var price = parseFloat(price);
					var converted = price * usd_pln;
					var rounded = converted.toFixed(2);
					var pln_price = rounded.replace(".", ",");

					var correct_price = number.replace(",", ".");
					var output = content.replace(matches[0], "<span>$</span>"+correct_price+"&nbsp;<span class=\"convert_price\">("+pln_price+"zł)</span>");
					$(this).html(output);
				}
			}
			else if(content.indexOf("€") >= 0) {
				$(this).addClass("euro");
				var pattern = /(\d+\.\d{2}\€)/;
				var matches = content.match(pattern);
				if(matches == null){
					var pattern = /(\d+\,\d{2}\€)/;
					var matches = content.match(pattern);
					if(matches == null){
						var pattern = /(\€\d+\.\d{2})/;
						var matches = content.match(pattern);
						if(matches == null){
							var pattern = /(\€\d+\,\d{2})/;
							var matches = content.match(pattern);
						    if(matches == null){
							    var pattern = /(\d+\€)/;
							    var matches = content.match(pattern);
								if(matches == null){
									var pattern = /(\€\d+)/;
									var matches = content.match(pattern);
								}
						    }
						}
					}
				}
				if(matches != null){
					var number = matches[0].replace("€", "");
					var price = number.replace(",", ".");
					var price = parseFloat(price);
					var converted = price * eur_pln;
					var rounded = converted.toFixed(2);
					var pln_price = rounded.replace(".", ",");

					var correct_price = number.replace(".", ",");
					var output = content.replace(matches[0], correct_price+"<span>€</span>&nbsp;<span class=\"convert_price\">("+pln_price+"zł)</span>");
					$(this).html(output);
				}
			}
			else if(content.indexOf("£") >= 0) {
				$(this).addClass("pound");
				var pattern = /(\£\d+\.\d{2})/;
				var matches = content.match(pattern);
				if(matches == null){
					var pattern = /(\£\d+\,\d{2})/;
					var matches = content.match(pattern);
					if(matches == null){
						var pattern = /(\d+\.\d{2}\£)/;
						var matches = content.match(pattern);
						if(matches == null){
							var pattern = /(\d+\,\d{2}\£)/;
							var matches = content.match(pattern);
							if(matches == null){
								var pattern = /(\£\d+)/;
								var matches = content.match(pattern);
								if(matches == null){
									var pattern = /(\d+\£)/;
									var matches = content.match(pattern);
								}
							}
						}
					}
				}
				if(matches != null){
					var number = matches[0].replace("£", "");
					var price = number.replace(",", ".");
					var price = parseFloat(price);
					var converted = price * gbp_pln;
					var rounded = converted.toFixed(2);
					var pln_price = rounded.replace(".", ",");

					var correct_price = number.replace(",", ".");
					var output = content.replace(matches[0], "<span>£</span>"+correct_price+"&nbsp;<span class=\"convert_price\">("+pln_price+"zł)</span>");
					$(this).html(output);
				}
			}
		}

		$(".single .entry-content").convert_temp();
	};

	var styles_convert_price = {
		"color": "rgb(0, 127, 0)",
		"font-size": "14px"
	};

	var browser_width = $(window).width();

	if(browser_width != null && browser_width >= 1220){
		var styles_convert_to_pln = {
			"width": "105px",
			"height": "auto",
			"background": "none",
			"top": "0px",
			"left": "-112px",
			"display": "block",
			"position": "absolute"
		};
	} else {
		var styles_convert_to_pln = {
			"width": "105px",
			"height": "auto",
			"background": "none",
			"top": "50px",
			"right": "15px",
			"display": "block",
			"position": "absolute"
		};
	}

	var styles_convert_to_pln_trigger = {
		"width": "81px",
		"height": "18px",
		"background": "rgb(53, 60, 59)",
		"color": "rgb(255, 255, 255)",
		"font-size": "12px",
		"font-family": "Oswald",
		"text-align": "right",
		"text-transform": "uppercase",
		"padding": "5px 12px 4px",
		"cursor": "pointer",
		"display": "block"
	};

	var styles_convert_to_pln_load_gif = {
		"width": "1px",
		"height": "1px",
		"background": "url('http://imgslot.com/upload/big/2013/12/21/52b5a9b68856c.gif') no-repeat",
		"top": "0px",
		"right": "0px",
		"padding": "0px",
		"margin": "0px",
		"display": "block",
		"position": "absolute"
	};

	var styles_convert_to_pln_show_btn = {
		"width": "auto",
		"height": "auto",
		"background": "rgb(53, 60, 59)",
		"text-shadow": "0px 2px 0px rgb(0, 0, 0)",
		"color": "rgb(255, 255, 255)",
		"font-size": "29px",
		"font-family": "calibri",
		"font-weight": "bold",
		"padding": "3px 7px 6px",
		"top": "0px",
		"right": "0px",
		"cursor": "pointer",
		"display": "none",
		"position": "absolute"
	};

	var styles_convert_to_pln_loading = {
		"width": "16px",
		"height": "16px",
		"top": "5px",
		"right": "110px",
		"display": "block",
		"position": "absolute"
	};

	var styles_convert_to_pln_curr_table = {
		"background": "rgb(255, 255, 255)",
		"color": "rgb(53, 60, 59)",
		"font-size": "16px",
		"font-family": "calibri",
		"font-weight": "bold",
		"text-align": "right",
		"padding": "5px 8px 5px",
		"display": "block"
	};

/*
	var styles_convert_to_pln = {
		"width": "auto",
		"height": "auto",
		"top": "52px",
		"right": "15px",
		"display": "block",
		"position": "absolute"
	};

	var styles_convert_to_pln_trigger = {
		"background": "#97C11F",
		"box-shadow": "0px 2px 0px rgb(96, 143, 1)",
		"border-radius": "3px 3px 3px 3px",
		"color": "rgb(255, 255, 255)",
		"font-size": "16px",
		"font-family": "calibri",
		"font-weight": "bold",
		"text-align": "center",
		"padding": "2px 8px 1px",
		"cursor": "pointer",
		"display": "block"
	};

	var styles_convert_to_pln_load_gif = {
		"width": "1px",
		"height": "1px",
		"background": "url('http://imgslot.com/upload/big/2013/12/21/52b5a9b68856c.gif') no-repeat",
		"top": "0px",
		"right": "0px",
		"padding": "0px",
		"margin": "0px",
		"display": "block",
		"position": "absolute"
	};

	var styles_convert_to_pln_show_btn = {
		"width": "auto",
		"height": "auto",
		"background": "#97C11F",
		"box-shadow": "0px 2px 0px rgb(96, 143, 1)",
		"border-radius": "3px 3px 3px 3px",
		"text-shadow": "0px 2px 0px rgb(0, 0, 0)",
		"color": "rgb(255, 255, 255)",
		"font-size": "22px",
		"font-family": "calibri",
		"font-weight": "bold",
		"padding": "0px 6px 3px",
		"top": "0px",
		"right": "0px",
		"cursor": "pointer",
		"display": "none",
		"position": "absolute"
	};

	var styles_convert_to_pln_loading = {
		"width": "16px",
		"height": "16px",
		"top": "5px",
		"right": "120px",
		"display": "block",
		"position": "absolute"
	};

	var styles_convert_to_pln_curr_table = {
		"background": "#97C11F",
		"box-shadow": "0px 2px 0px rgb(96, 143, 1)",
		"border-radius": "3px 3px 3px 3px",
		"color": "rgb(255, 255, 255)",
		"font-size": "16px",
		"font-family": "calibri",
		"font-weight": "bold",
		"text-align": "left",
		"padding": "8px 8px 1px",
		"margin-top": "-3px",
		"display": "block"
	};
*/

	$(".single .entry").append("<div id='convert_to_pln'></div>");
	$('#convert_to_pln').css(styles_convert_to_pln);
	$(".single #convert_to_pln").append("<div id='convert_to_pln_trigger'>Przelicz na PLN</div>");
	$('#convert_to_pln_trigger').css(styles_convert_to_pln_trigger);
	$(".single #convert_to_pln").append("<div id='convert_to_pln_load_gif'></div>");
	$('#convert_to_pln_load_gif').css(styles_convert_to_pln_load_gif);
	$(".single #convert_to_pln").append("<div id='convert_to_pln_show_btn'>+</div>");
	$('#convert_to_pln_show_btn').css(styles_convert_to_pln_show_btn);

	$('.single #convert_to_pln_show_btn').click(function(){
		$('#convert_to_pln_show_btn').hide();
		$('#convert_to_pln_curr_table').show();
		$('#convert_to_pln_trigger').show();
	});

	$('.single #convert_to_pln_trigger').click(function(){
		if ($('#convert_to_pln_loading').length == 0 ) {
			$(".single #convert_to_pln").append("<div id='convert_to_pln_loading'><img src=\"http://imgslot.com/upload/big/2013/12/21/52b5a9b68856c.gif\" alt=\"loading\" /></div>");
			$('#convert_to_pln_loading').css(styles_convert_to_pln_loading);
		} else {
			$('#convert_to_pln_loading').show();
		}
		if($.cookie('usd_pln') == undefined && $.cookie('eur_pln') == undefined && $.cookie('gbp_pln') == undefined && $.cookie('brl_pln') == undefined) {
			$.when(
				$.get("http://rate-exchange.appspot.com/currency", { "from": "USD", "to": "PLN" }, function () {}, 'jsonp'),
				$.get("http://rate-exchange.appspot.com/currency", { "from": "EUR", "to": "PLN" }, function () {}, 'jsonp'),
				$.get("http://rate-exchange.appspot.com/currency", { "from": "GBP", "to": "PLN" }, function () {}, 'jsonp'),
				$.get("http://rate-exchange.appspot.com/currency", { "from": "BRL", "to": "PLN" }, function () {}, 'jsonp')
			)
			.done(function( usd, eur, gbp, brl ) {
				var usd_pln = usd[0].rate;
				var eur_pln = eur[0].rate;
				var gbp_pln = gbp[0].rate;
				var brl_pln = brl[0].rate;
				if ($('#convert_to_pln_curr_table').length == 0 ) {
					$(".single #convert_to_pln").append("<div id='convert_to_pln_curr_table'>$: "+usd_pln+"<br />€: "+eur_pln+"<br />£: "+gbp_pln+"<br />R$: "+brl_pln+"</div>");
					$('#convert_to_pln_curr_table').css(styles_convert_to_pln_curr_table);
				}
				convert_to_pln( usd_pln, eur_pln, gbp_pln, brl_pln );
				convert_to_pln( usd_pln, eur_pln, gbp_pln, brl_pln );
				$('.convert_price').css(styles_convert_price);
				$.cookie('usd_pln', usd_pln, {expires:1});
				$.cookie('eur_pln', eur_pln, {expires:1});
				$.cookie('gbp_pln', gbp_pln, {expires:1});
				$.cookie('brl_pln', brl_pln, {expires:1});
				console.log(usd_pln);
				console.log(eur_pln);
				console.log(gbp_pln);
				console.log(brl_pln);
				$("#convert_to_pln_loading").hide();
			})
			.fail(function() {
				var usd_pln = 3.04072;
				var eur_pln = 4.15813;
				var gbp_pln = 4.96986;
				var brl_pln = 1.27544;
				if ($('#convert_to_pln_curr_table').length == 0 ) {
					$(".single #convert_to_pln").append("<div id='convert_to_pln_curr_table'>$: "+usd_pln+"<br />€: "+eur_pln+"<br />£: "+gbp_pln+"<br />R$: "+brl_pln+"</div>");
					$('#convert_to_pln_curr_table').css(styles_convert_to_pln_curr_table);
				}
				convert_to_pln( usd_pln, eur_pln, gbp_pln, brl_pln );
				convert_to_pln( usd_pln, eur_pln, gbp_pln, brl_pln );
				$('.convert_price').css(styles_convert_price);
				$("#convert_to_pln_loading").hide();
				$('#convert_to_pln_curr_table').delay(5000).fadeOut();
				$('#convert_to_pln_trigger').delay(6000).fadeOut();
				$('#convert_to_pln_show_btn').delay(6000).fadeIn();
			});
		} else {
			var usd_pln = $.cookie('usd_pln');
			var eur_pln = $.cookie('eur_pln');
			var gbp_pln = $.cookie('gbp_pln');
			var brl_pln = $.cookie('brl_pln');
		//	var cookies = $.cookie();
		//	console.log(cookies);
			if ($('#convert_to_pln_curr_table').length == 0 ) {
				$(".single #convert_to_pln").append("<div id='convert_to_pln_curr_table'>$: "+usd_pln+"<br />€: "+eur_pln+"<br />£: "+gbp_pln+"<br />R$: "+brl_pln+"</div>");
				$('#convert_to_pln_curr_table').css(styles_convert_to_pln_curr_table);
			}
			convert_to_pln( usd_pln, eur_pln, gbp_pln, brl_pln );
			convert_to_pln( usd_pln, eur_pln, gbp_pln, brl_pln );
			$('.convert_price').css(styles_convert_price);
			$('#convert_to_pln_loading').delay(200).fadeOut();
			$('#convert_to_pln_curr_table').delay(5000).fadeOut();
			$('#convert_to_pln_trigger').delay(6000).fadeOut();
			$('#convert_to_pln_show_btn').delay(6000).fadeIn();
		}
	});
});
Zamieniłem sprawdzanie znaczników strong na parsowanie całej treści wpisu. Zagnieżdżone warunki wrzuciłem do jednego regexpa - powinno to być wydajniejsze i bardziej elastyczne.
To co jeszcze trzeba zrobić, to poprawić podobnie inne waluty, oraz uniezależnić ich sprawdzanie od tego, czy inna waluta już wystąpiła we wpisie (else if => if). Problem będzie jedynie z dolarem (real brazylijski będzie się kwalifikował do regexpa z dolarem), ale można go obejść pobierając dodatkowy znak przed "$": jeśli będzie to "R" - pomijamy, jeśli będzie to coś innego - konwertujemy. Ten dodatkowy znak musimy też uwzględnić przy zamianie cen, aby nie było konfliktów w wypadku gdy we wpisie występuje "R$10.00" i "$10.00". Ja nie dam rady się tym zająć przed świętami, jak ktoś się będzie nudził, może zaimplementować takie poprawki. ;]
Awatar użytkownika
Łowca
Posty: 55
Rejestracja: 14 lis 2013, o 02:19
Płeć: Mężczyzna
Podziękował: 0
Podziękowania: 2 razy
Kontakt:

rob006 pisze: Skrypt jest fajny, ale w tym momencie zawiera kilka założeń, które nie zawsze będą się sprawdzały. W jednym znaczniku strong mogą się znajdować różne waluty, które mogą być też różnie formatowane.
Możesz podać przykładowy wpis? Gdyż testowałem to na wielu, i nie znalazłem takiego (oczywiście nie licząc tych, gdzie w WYSWIGu ktoś narobił niezłego bigosu, i tagi <strong> są używane w sposób którego normalny zjadacz chleba nigdy nie ogarnie).

Natomiast jeżeli chodzi o wydajność, zostawiłem osobne if'y, bo tak mi się to łatwiej debugowało. Sprawdzałem to na ręcznie zrobionym kosmicznie długim wpisie, z ponad 1000 gier/cen, i efekt jest cały czas natychmiastowy. Między innymi dlatego też nawet specjalnie ustawiłem ten loading, aby użytkownik widział że "coś" się robi. Dodatkowo później musiałem ustawić jego ukrywanie z .delay(500), aby zdążył się w ogóle użytkownikowi wyświetlić, jeżeli ceny są pobierane z ciach a nie z zewnątrz. Dlatego myślę że temat wydajności można pominąć, tym bardziej że to jest javascript, i obciąża procesor użytkownika a nie serwera, do tego rodzaju obliczeń wystarczył by nawet 386.

Inna sprawa, że zamiast robić jakieś piękne pętle z wieloma warunkami, możliwościami etc, lepiej wprowadzić jakieś standardy, przez co sam skrypt przeliczania, będzie działał na dwóch regexpach, dla waluty przed/za ceną, i nigdy się nie pomyli.

Np, można by poprosić redaktorów aby każdą linijkę z ceną pakowali w <strong>, lub w listę i <strong>. Dodatkowo jeżeli kiedyś, gdzieś, miały by się zdarzyć że w jednym <strong>u dwie ceny z różnymi walutami, to niech każdą cenę też się dodatkowo walnie w osobny <strong> i skrypt sobie poradzi.

Lub nie zawracać gitary redaktorom, i samemu dostosować treść wpisu, a dokładniej cen w nim, do standardów. Z PHP będziesz miał dużo większe możliwości niż ja z javascriptem i nawet z jQuery. Do tego z WordPressem jest bajka, jedyny problem to wybrać które z praktycznie gotowych rozwiązań zastosować, np:
http://codex.wordpress.org/Plugin_API/A ... blish_post
http://codex.wordpress.org/Plugin_API/A ... /save_post
http://codex.wordpress.org/Plugin_API/F ... _post_data

I do tego jakaś funkcja która będzie operować na treści, i poprawi co trzeba, aby użycie javascriptu potem, było już tylko formalnością. Jeżeli to miało by być zrobione fajnie i dobrze, to przynajmniej ja bym tak zrobił. Plusem dodatkowo będzie to, że nawet i bez konwertera, każdy czytelnik będzie widział ceny w poprawnym formacie i składni.
Ostatnio zmieniony 24 gru 2013, o 08:17 przez amistad18, łącznie zmieniany 1 raz.
Awatar użytkownika
Łowca
Posty: 36
Rejestracja: 2 lis 2013, o 14:26
Płeć: Mężczyzna
Lokalizacja: Rumia, Pomorskie
Podziękował: 0
Podziękowania: 0
Kontakt:

Po prostu świetne ! :) Dzięki za ten skrypt, o wiele bardziej mi ułatwił życie :P
Awatar użytkownika
Łowca
Posty: 75
Rejestracja: 14 kwie 2013, o 17:58
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 0
Podziękowania: 1 raz
Kontakt:

Coś jest nie tak:(
Załączniki
skrypt.jpg
skrypt.jpg (46.35 KiB) Przejrzano 4850 razy
Awatar użytkownika
Webmaster
Posty: 565
Rejestracja: 6 lut 2013, o 12:12
Płeć: Mężczyzna
Lokalizacja: Lublin
Discord: rob006
Podziękował: 166 razy
Podziękowania: 205 razy
Kontakt:

amistad18, powyżej masz przykład takiego wpisu. Kwestia wydajności nie jest tu kluczowa - po prostu taka wersja jest bardziej czytelna i działa lepiej.
Proszenie redaktorów o wprowadzenie standardów to taka oderwana od rzeczywistości spychologia - prędzej czy później i tak jakiś wpis nie będzie się tych standardów trzymał. Poza tym dostosowanie skryptu będzie trwało krócej, niż poprawianie kilku wpisów czy pogrubianie każdej ceny osobno dla jakiegoś dłuższego wpisu. ;]
PHP nie chciałbym w to mieszać, bo:
1. Jest to rozwiązanie twarde, które w razie problemów rozjedzie wpis i każdy będzie go takim widział. Poza tym staramy się unikać auto-magii modyfikującej wpisy - i tak już mamy jej zbyt wiele.
2. Dostosowanie skryptu w JS jest szybsze i łatwiejsze, tym bardziej że napisałem jak to zrobić. Jeśli nie znajdą się chętni na wprowadzenie poprawek, to sam go mogę po świętach poprawić.
Awatar użytkownika
Łowca
Posty: 55
Rejestracja: 14 lis 2013, o 02:19
Płeć: Mężczyzna
Podziękował: 0
Podziękowania: 2 razy
Kontakt:

Nie wiem jak piszecie te wpisy, pewnie to nie jest ctrl+c / ctrl+v, tylko trzeba się przy tym pobawić, dlatego założyłem że zaznaczenie ceny z walutą, i kliknięcie na B na górze edytora, lub ctrl+b, nie będzie ogromnym dodatkowym nakładem pracy.

I patrząc na wpis z którym jest problem, to chyba mam rację. Na pierwszych cenach koło obrazka, gdzie wszystko jest wrzucone do jednego <strong>a, twoja wersja z forEach() zadziała, ale na to niżej już nie:

Kod: Zaznacz cały

<strong>
	<a target="_blank" href="http://lowcygier.pl/r.php?r=...">
		Dogfight 1942
	</a>
	&ndash; 3.00
</strong>
<strong>
	£
</strong>
<strong>
	&ndash; Steam
</strong>
<br>
<strong>
	<a target="_blank" href="http://lowcygier.pl/r.php?r=...">
		Psychonauts
	</a>
	&ndash; 1.49
</strong>
<strong>
	£
</strong>
<strong>
	&ndash; Steam
	<br>
</strong>
Dlatego też napisałem na wstępie, że skrypt radzi sobie z większością cen.

Masz pomysł jak takie kody ugryźć? Jak dla mnie używając .html() do zaciągania treści się tego nie da osiągnąć, natomiast stosując .text() gubi się linki.
Awatar użytkownika
Webmaster
Posty: 565
Rejestracja: 6 lut 2013, o 12:12
Płeć: Mężczyzna
Lokalizacja: Lublin
Discord: rob006
Podziękował: 166 razy
Podziękowania: 205 razy
Kontakt:

Pogrubianie jednej ceny to żaden problem, pogrubianie 20 cen to już poważna upierdliwość - wtedy zwykle zaznaczana jest cała lista promocji i pogrubiana raz. Wtedy w jednym strongu mogą być różne waluty, a i zdarzają się różne formaty. Poza tym czasami ceny są wymienione jako część zdania, wtedy nie zawsze są pogrubiane, dlatego też nie warto na tym znaczniku opierać mechaniki działania skryptu, tym bardziej, jeśli nie ma takiej potrzeby.
Zacytowany fragment to już jest przypadek ekstremalny i najzwyczajniej w świecie bym go olał. :P
Awatar użytkownika
Łowca
Posty: 55
Rejestracja: 14 lis 2013, o 02:19
Płeć: Mężczyzna
Podziękował: 0
Podziękowania: 2 razy
Kontakt:

Tylko zauważ że zazwyczaj to działa poprawnie, i tak jak w większości przypadków są pogrubiane w całości linie, z gra - cena - steam (to jest super), tak w niektórych wpisach, pogrubiane są osobno różne elementy, w obrębie tej samej linii, co jest bardziej czasochłonne niż pogrubienie po prostu całej linii. Więc wystarczy prosta wytyczna/zalecenie aby zaznaczać całą linię, bold, kolejna linia, bold - dla niektórych redaktorów nie będzie to nic nowego, dla pozostałych oszczędność czasu 8-)

No nie wiem czy przypadek to taki ekstremalny - gdyż jak pisałem i testowałem skrypt, to co najmniej w kilku wpisach takie kody widziałem, i jako że nie miałem pomysłu jak je przeskoczyć, to właśnie ten problem olałem. Jednakże w przeciwieństwie do tego ostatniego, autorem największej ilości problematycznych wpisów był Kal3jdoskop (no hard feelings bro!), ale widzę że to jednak nie jest odosobniony przypadek (i oczywiście to rozumiem, wiem że WYSWIG to zuo, i czasami generuje tak upierdliwe kody że nawet artisteer się nie umywa).

Więc może zamiast olania problemu, skoro już mam uwagę administracji, mógł bym prosić o edycję tego wpisu w edytorze HTML? Zajmie to minutę lub dwie - czyli jeszcze mniej niż poprawienie skryptu ;)
http://lowcygier.pl/promocje/wyprzedaz- ... e-dzien-2/
Awatar użytkownika
Łowca
Posty: 55
Rejestracja: 14 lis 2013, o 02:19
Płeć: Mężczyzna
Podziękował: 0
Podziękowania: 2 razy
Kontakt:

Z góry przepraszam za doubleposta, ale edycji nikt by nie zauważył.

Kolejna wersja skryptu, changelog:
- wprowadziłem poprawki zaproponowane przez @rob006, teraz skrypt działa na całej treści wpisu, a nie tylko na tagach <strong>
- dodatkowo dołożyłem też sprawdzanie tych ekstremalnych przypadków, kiedy waluta wygląda np. tak <strong>$</strong><strong>5.50</strong>
- poprawiłem działanie ciasteczek, teraz są już one wspólne dla całej domeny
- dołożyłem też ikonkę ciasteczka do celów informacyjnych, jeżeli jest ona kolorowa oznacza to że ciasteczka istnieją i skrypt pobrał kursy walut z ciasteczek. Natomiast jeżeli ikona ciasteczka jest szara, wtedy skrypt pobrał sobie nowe kursy walut (powinniście widzieć szarą ikonkę co 24h, jak ktoś widzi ją dużo częściej to dajcie znać).

Link:
http://www.amistad18.net/Konwerter_Walut.user.js

Dajcie znać jak u Was wygląda sprawa z wydajnością skryptu, gdyż niestety ale przy tym nowym sposobie wyszukiwania i podmieniania całej treści wpisu, działa to wolniej.
Awatar użytkownika
Webmaster
Posty: 565
Rejestracja: 6 lut 2013, o 12:12
Płeć: Mężczyzna
Lokalizacja: Lublin
Discord: rob006
Podziękował: 166 razy
Podziękowania: 205 razy
Kontakt:

amistad18 pisze: - dodatkowo dołożyłem też sprawdzanie tych ekstremalnych przypadków, kiedy waluta wygląda np. tak <strong>$</strong><strong>5.50</strong>
Próbowałeś wyszukiwać i usuwać ciągi znaków "</strong><strong>"? To mogłoby być bardziej uniwersalne rozwiązanie.
Awatar użytkownika
Łowca
Posty: 55
Rejestracja: 14 lis 2013, o 02:19
Płeć: Mężczyzna
Podziękował: 0
Podziękowania: 2 razy
Kontakt:

rob006 pisze: Próbowałeś wyszukiwać i usuwać ciągi znaków "</strong><strong>"? To mogłoby być bardziej uniwersalne rozwiązanie.
Usuwałem je dopiero w foreach'u z match'a, ale w sumie racja że można by to zrobić na początku globalnie.
Poprawiona wersja cały czas pod tym samym linkiem.

A kiedy Wy zamierzacie dodać skrypt "globalnie", dla wszystkich? :bananmechanik:
Awatar użytkownika
Webmaster
Posty: 565
Rejestracja: 6 lut 2013, o 12:12
Płeć: Mężczyzna
Lokalizacja: Lublin
Discord: rob006
Podziękował: 166 razy
Podziękowania: 205 razy
Kontakt:

amistad18 pisze: A kiedy Wy zamierzacie dodać skrypt "globalnie", dla wszystkich? :bananmechanik:
Planujemy jeszcze kilka modyfikacji na stronie, skrypt pewnie dorzucimy razem z nimi, w przeciągu 1-2 tygodni.
Awatar użytkownika
Webmaster
Posty: 565
Rejestracja: 6 lut 2013, o 12:12
Płeć: Mężczyzna
Lokalizacja: Lublin
Discord: rob006
Podziękował: 166 razy
Podziękowania: 205 razy
Kontakt:

Konwerter po lekkich modyfikacjach został na stale zintegrowany ze stroną i nie trzeba go dorzucać żadnymi wtyczkami. Ci którzy wcześniej to zrobili, powinni skrypt wyłączyć, bo będzie się wam wyświetlał podwójnie i w efekcie rozjeżdżał.
Podziękowania dla twórcy i innych, którzy przyczynili się do jego powstania. :)
Awatar użytkownika
Łowca
Posty: 45
Rejestracja: 12 lip 2013, o 15:56
Płeć: Mężczyzna
Lokalizacja: Lubin
Podziękował: 0
Podziękowania: 0
Kontakt:

A gdzie można zgłosić błąd związany z tym licznikiem?
Np. Tutaj:
http://lowcygier.pl/promocje-cyfrowe/na ... -dostepne/

Jeżeli znaczek nie będzie pogrubiony, to nie przelicza.
Może też to specjalny zabieg. :)
Awatar użytkownika
Webmaster
Posty: 565
Rejestracja: 6 lut 2013, o 12:12
Płeć: Mężczyzna
Lokalizacja: Lublin
Discord: rob006
Podziękował: 166 razy
Podziękowania: 205 razy
Kontakt:

Zgłaszaj (np w komentarzach), że news jest źle sformatowany. Trzeba cisnąć newsmanów :D
Awatar użytkownika
Łowca
Posty: 55
Rejestracja: 14 lis 2013, o 02:19
Płeć: Mężczyzna
Podziękował: 0
Podziękowania: 2 razy
Kontakt:

Cała przyjemność po mojej stronie, mieć jakiś swój mały wkład w stronę, i móc się odwdzięczyć łowcom za ich pracę.
Również dziękuję wszystkim którzy pomagali przy testowaniu, zgłaszali błędy i sugestie. Wszystkich dodałem do nagłówka skryptu, i widzę że w tej zintegrowanej wersji też wszyscy są wypisani.

Jedno tylko małe pytanie na koniec, widziałem że kursy walut są definiowane przed skryptem, @rob, pobieracie je w taki sam sposób i cacheujecie? Czy są pobierane z innego źródła?
Awatar użytkownika
Webmaster
Posty: 565
Rejestracja: 6 lut 2013, o 12:12
Płeć: Mężczyzna
Lokalizacja: Lublin
Discord: rob006
Podziękował: 166 razy
Podziękowania: 205 razy
Kontakt:

Pobieramy je z tego samego źródła (korzystaliśmy z niego też przy przeliczaniu cen dla Śledź okazje) i cache'ujemy.
Awatar użytkownika
Łowca
Posty: 55
Rejestracja: 14 lis 2013, o 02:19
Płeć: Mężczyzna
Podziękował: 0
Podziękowania: 2 razy
Kontakt:

Podziękował. Temat w takim razie chyba już do zamknięcia :)
ODPOWIEDZ