ceske-sluzby icon indicating copy to clipboard operation
ceske-sluzby copied to clipboard

Add support for Zásilkovna (+ little bit of transients for JSONs)

Open oerdnj opened this issue 8 years ago • 19 comments

Hi,

I have added support for Zásilkovna (basically cut&paste from Uloženka) and added transients for loaded and parsed jsons.

Please merge.

oerdnj avatar Nov 07 '16 13:11 oerdnj

Wow, thank you! :+1:

I will test it during this week, but it looks good. Maybe we could also merge two similar json loader files?

Transients are a very good idea :-)

Issue: #15

pavelevap avatar Nov 07 '16 14:11 pavelevap

WAU 👍

lukasprelovsky avatar Nov 07 '16 14:11 lukasprelovsky

There's more stuff that's just cut&paste, so it could have a common class, but my PHP-fu is very rusty as I try to actively avoid writing code in PHP, and I needed something for my wife's shop (https://vseprochleba.cz) finished before my attention turns into some other direction :). Feel free to modify as it suits you, but I am big fan of "release early, release often" and there's plenty of time for rebasing later.

oerdnj avatar Nov 07 '16 14:11 oerdnj

One more commit that will allow storing a local copy of Uloženka and Zásilkovna logos inside local WP instance (if you don't want to ping their logos every time your customer enters cart...)

You can see the running instance at https://vseprochleba.cz/

oerdnj avatar Nov 07 '16 14:11 oerdnj

There's one more thing I thought it's worth doing. The Json classes are really useless as they are as only one function is really used. The basic class should be rewritten as Iterator and the Uloženka and Zásilkovna classes should just redefine the method that constructs URL and iterates through data.

oerdnj avatar Nov 08 '16 12:11 oerdnj

@oerdnj: Yes, Iterator is also great possibility, I would welcome some concept :-) I planned to have only one simple class (as before this pull request) and with any new shipping method, I could simply use $params to pass API endpoint and shipping ID (these are probably the only information for different shipping methods).

And one more thing, configurable logo URLs is great idea, but I am not sure if we should require users to download logo, upload it, find exact URL and insert it into text field. It is quick and easy for us, but not for many users (also with possible problems when switching eshop to HTTPS, etc). I planned to download it with wp_remote_get(), save it into Media library automatically and use only ID of this file. And in the end it could be configurable by upload field (user do not add URL in text format, but click on button and select/upload another file). But I did not have time to do it, so it was simply loaded from external source :-)

pavelevap avatar Nov 10 '16 14:11 pavelevap

@pavelevap Zdravim, chcem sa spytat, ako je to s touto upravou. Kedy vidite, ze by mohla byt sucastou pluginu? Zakaznik by rad zasielkovnu vyuzival a nechcem mu davat dalsi plugin. Vdaka.

romanrehacek avatar Dec 06 '16 15:12 romanrehacek

@romanrehacek Kvůli tomu, že se tohle moc nehýbe, jsem stvořil WooCommerce Zásilkovna plugin: https://github.com/oerdnj/woocommerce-zasilkovna

Nicméně ten nový potřebuje WC 2.6+ kvůli tomu, že podporuje Shipping Zones (tj. pro každou shipping zónu se dá nastavit samostatná cena).

oerdnj avatar Dec 06 '16 21:12 oerdnj

@oerdnj Super vdaka. Vyskusam.

romanrehacek avatar Dec 06 '16 21:12 romanrehacek

Díky :-) Nehýbalo se to proto, že jsem zatím neměl čas to přepsat a dosavadní PR jsem v této podobě integrovat kompletně nechtěl (viz výše zmiňované pole s URL adresou a sloučení s Uloženkou). Takže Zásilkovna součástí pluginu České služby určitě bude, ale ještě tam musím pár věcí dodělat... Docela se mi na novém pluginu líbí debug mode a nechám se asi inspirovat i Iteratorem a transienty :-)

pavelevap avatar Dec 06 '16 22:12 pavelevap

Nebylo by lepší, kdyby se České Služby obecně rozpadly do více pluginů? A ceske-sluzby byl jenom plugin, který by doporučoval instalaci ostatních (podobně jako to dělá Virtue theme)?

oerdnj avatar Dec 06 '16 22:12 oerdnj

To je také hodně zajímavý nápad :-) Už jsem o tom také přemýšlel, ale nejsem si jist, jak to celé udělat, aby zase nebylo nutné mít pro každou část samostatný plugin (což je někdy zbytečné). Dosavadní záměr byl takový, že současné funkce rozsekám do jednotlivých souborů a v administraci vznikne nějaká aktivační stránka, kde je bude možné aktivovat/načítat (nyní tam jsou vlastně stejně aktivační checkboxy). Bylo by hezké, kdyby tam šlo přidat i další (externí) pluginy a případně umožnit jejich instalaci (třeba i z Githubu). Nápady vítány :-)

Virtue theme neznám, podívám se. Je to tato šablona?

pavelevap avatar Dec 06 '16 22:12 pavelevap

@pavelevap Ano, je to ona. (Resp. na vseprochleba.cz používáme to "Pro" variantu kvůli breadcrumbs, ale jinak je to asi nejlepší šablona pro Woo, na kterou jsme narazili.)

oerdnj avatar Dec 07 '16 08:12 oerdnj

Ta aktivace těch pluginů je v virtue/lib/virtuetoolkit-activate.php

oerdnj avatar Dec 07 '16 08:12 oerdnj

No mne sa tento plugin paci prave kvoli tomu, ze je vsetko v jednom. Nepotrebujem mat na kazdu funkcionalitu samostatny plugin.

Chcete teda tento pugin prekopat uplne od zakladov a spravit nanovo? Kludne vam s tym pomozem ;-)

romanrehacek avatar Dec 07 '16 08:12 romanrehacek

@oerdnj: Díky, podívám se na to.

@romanrehacek: Celý ten plugin je vlastně spousta různých funkcí, jejichž zapínání je řešeno aktivačními checkboxy (např. dodací doba, XML feedy, Heureka certifikát, atd), což je zase důsledek toho, že nebylo původně zamýšleno, že toho bude obsahovat tolik :-) Vše co nyní obsahuje by samozřejmě obsahoval i nadále (nebyly by to samostatné pluginy, ale spíše doplňkové addony), jen by aktivace jednotlivých částí (addonů) probíhala přehledně na jedné stránce + byly by tam i další tipy na free pluginy, které nejsou součástí pluginu České služby, ale dají se dohledat a jsou funkční (třeba jako právě nyní Zásilkovna a další). Trochu problém ale je, že jsou některé části propojené, např. dodací doba a XML feedy, EAN a XML feedy, atd. Ale to by šlo generalizovat, stejně tam máme podporu pro vlastní řešení (např. pomocí postmeta) a vlastně by to bylo do budoucna spíše k dobru :-)

pavelevap avatar Dec 07 '16 09:12 pavelevap

Takže šablona Virtue používá instalační systém TGM Plugin Activation. Tam by možná šlo i nastavit, že jsou jednotlivé části vlastně součástí hlavního pluginu a následně by se mohly doplnit i další doporučované pluginy (s instalačními odkazy). Zkusím si s tím trochu pohrát, to by mohlo být zajímavé (a vcelku rychlé) řešení (alespoň pro doporučování externích pluginů)...

pavelevap avatar Dec 07 '16 12:12 pavelevap

Zdravím, jak to prosím vypadá s tímto PR? Je v plánu jej mergovat do masteru?

matyx avatar Mar 30 '17 14:03 matyx

Ano, jen dojde k některým úpravám. Nebude už vyžadován externí plugin Pay for Payment a i další možnosti (např. příplatek za dobírku) budou přímo nastavitelné v rámci pluginu České služby. Prosím ještě o trpělivost...

pavelevap avatar Mar 30 '17 18:03 pavelevap