Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2004-04-17 16:10:51

mamash
Member
From: Prague
Registered: 2004-02-21
Posts: 127
Website

[plugin] [ORPHAN] fha_time_diff: A Time Since generator

Notice: This plugin is no longer available by the author but it can be copied from this thread.

For txp version 4.8.7+ see forum.textpattern.com/viewtopic.php?pid=331111#p331111

**********************************************************

Hi,

this is my first plugin ever, so be kind to me. Download it here (it’s the new plugin syntax, so simply copy and paste the code into your TXP plugin admin). The old, pre-RC (1.19 and older) format plugin is still there.

It takes a certain date in parts (i. e. year, month, hour etc.) and spills out a ‘time since’ information. If some units are not provided, no values for these units are returned either. Some examples:

  • <txp:fha_time_diff year="2004" month="3" day="23" hour="2" minute="40" />
    Returns a complete time information, from years to minutes.
  • <txp:fha_time_diff year="2000" month="10" />
    Returns months and years since October 2000.
  • <txp:fha_time_diff year="1980" month="5" day="1" />
    Returns years, months and days since May 1, 1980.
  • <txp:fha_time_diff year="1975" />
    Only returns years since 1975.

Additionally, these arguments can be passed to the plugin. (You don’t need them for basic use with English language.)

  • lang=""
    Sets a language (two chars) for unit words; see plugin source for languages provided (sofar Czech and English only) and hints on how to add others. If not set, the plugin tries the site wide language setting, otherwise ‘en’ is assumed.
  • simpleplurals=""
    If set to a non-zero number, it indicates which amount triggers the plural form (e. g. ‘years’ instead of ‘year’). If set to zero, it turns on special word forms handling that always follows the last digit (e. g. necessary for Czech dates). If not set, it defaults to a language-specific value (2 for English, 0 for Czech).
  • delimiter=""
    Sets characters that should separate individual values. If not set, a comma with a space are assumed.

The plugin is based upon a script written by Mark H. Kathmann.

Copy Paste Plugin

YToxMDp7czo0OiJuYW1lIjtzOjEzOiJmaGFfdGltZV9kaWZmIjtzOjY6ImF1dGhvciI7czoxMToiRmlsaXAgSGFqbnkiO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9maWxpcC5oYWpueS5uZXQiO3M6NzoidmVyc2lvbiI7czo0OiIwLjIzIjtzOjExOiJkZXNjcmlwdGlvbiI7czo1NjoiUmV0dXJucyB0aW1lIGRpZmZlcmVuY2UgZnJvbSB0aGUgZGF0ZSBzZXQgdmlhIGFyZ3VtZW50cy4iO3M6NDoiaGVscCI7czo1MTA5OiI8cD5UaGUgcGx1Z2luIHRha2VzIGluIGluZGl2aWR1YWwgcGFydHMgb2YgZGF0ZSBhbmQgdGltZSwgaS4gZS4geWVhciwgbW9udGgsIGhvdXIgZXRjLiBhbmQgcmV0dXJuIHRoZSB0aW1lIGVsYXBzZWQvcmVtYWluaW5nIHNpbmNlL3VudGlsIG5vdy4gQm90aCBwYXN0IGFuZCBmdXR1cmUgZGF0ZXMgYXJlIGFsbG93ZWQgYW5kIHByb2Nlc3NlZCBwcm9wZXJseS4gSWYgc29tZSB1bml0cyBhcmUgbm90IHByb3ZpZGVkLCBubyB2YWx1ZXMgZm9yIHRoZXNlIHVuaXRzIGFyZSByZXR1cm5lZCBlaXRoZXIgLSBwcm92aWRlZCB0aGF0IHlvdSAndHJpbScgdGhlIHZhbHVlcyBsaXN0IGZyb20gdGhlIHJpZ2h0LCBpLiBlLiBhdCBsZWFzdCB0aGUgeWVhciBuZWVkcyB0byBiZSBzcGVjaWZpZWQuIEFsc28sIHRoZXJlIHNob3VsZG4ndCBiZSBhbnkgZ2FwcyBpbiB0aGUgc2VxdWVuY2UgbG9naWMsIGkuIGUuIGlmIHlvdSB3YW50IG1pbnV0ZXMgY2FsY3VsYXRlZCwgeW91IG11c3Qgc3BlY2lmeSBob3VycyBhcyB3ZWxsIChhbmQgcHJvdmlkZSBhIDxjb2RlPmhvdXI9IjAiPC9jb2RlPiBpZiB0aGUgaG91ciB3YXMgemVybykuPC9wPgoJPHA+U29tZSBleGFtcGxlczo8L3A+CgogICAgPGRsPgoJICAgIDxkdD48Y29kZT4mbHQ7dHhwOmZoYV90aW1lX2RpZmYgeWVhcj0iMjAwNCIgbW9udGg9IjMiIGRheT0iMjMiIGhvdXI9IjIiIG1pbnV0ZT0iNDAiIC8mZ3Q7PC9jb2RlPjwvZHQ+CgkJPGRkPlJldHVybnMgYSBjb21wbGV0ZSB0aW1lIGluZm9ybWF0aW9uLjwvZGQ+CiAgICAgICAgPGR0Pjxjb2RlPiZsdDt0eHA6ZmhhX3RpbWVfZGlmZiB5ZWFyPSIyMDAwIiBtb250aD0iMTAiIC8mZ3Q7PC9jb2RlPjwvZHQ+CgkJPGRkPlJldHVybnMgbW9udGhzIGFuZCB5ZWFycyBzaW5jZSBPY3RvYmVyIDIwMDAuPC9kZD4KICAgICAgICA8ZHQ+PGNvZGU+Jmx0O3R4cDpmaGFfdGltZV9kaWZmIHllYXI9IjE5ODAiIG1vbnRoPSI1IiBkYXk9IjEiIC8mZ3Q7PC9jb2RlPjwvZHQ+CgkJPGRkPlJldHVybnMgeWVhcnMsIG1vbnRocyBhbmQgZGF5cyBzaW5jZSBNYXkgMSwgMTk4MC48L2RkPgogICAgICAgIDxkdD48Y29kZT4mbHQ7dHhwOmZoYV90aW1lX2RpZmYgeWVhcj0iMTk3NSIgLyZndDs8L2NvZGU+PC9kdD4KCQk8ZGQ+T25seSByZXR1cm5zIHllYXJzIHNpbmNlIDE5NzUuPC9kZD4KICAgIDwvZGw+CgoJPHA+RnVydGhlcm1vcmUsIHRoZXJlIHR3byBzcGVjaWFsIGFyZ3VtZW50cywgd2hpY2ggY2hhbmdlIHRoZSB3YXkgdGltZSBpcyBjYWxjdWxhdGVkLjwvcD4KCTxkbD4KCQk8ZHQ+PGNvZGU+cG9zdGVkPSIiPC9jb2RlPjwvZHQ+CgkJPGRkPkNhbiBiZSBzcGVjaWZpZWQgaW5zdGVhZCBvZiB0aGUgZGF0ZS90aW1lIHZhbHVlcyBhYm92ZS4gSWYgc2V0IHRvIGFueSB2YWx1ZSAoYXMgaW4gcG9zdGVkPSJ5ZXMiKSwgaXQgdGFrZXMgaW4gdGhlIGN1cnJlbnQgYXJ0aWNsZSdzIHBvc3RlZCBkYXRlIChwcm92aWRlZCB0aGVyZSBpcyBzdWNoIGEgY29udGV4dCkuIEN1cnJlbnRseSBpdCB3b3JrcyBpbiBhcnRpY2xlIGZvcm1zLCBOT1QgaW4gYXJ0aWNsZSBib2RpZXMuIChUaGUgb3JpZ2luYWwgaW50ZW50aW9uIGlzIHRvIHVzZSB0aGlzIHBsdWdpbiBpbnN0ZWFkIG9mIHRoZSA8Y29kZT4mbHQ7dHhwOnBvc3RlZCAvJmd0OzwvY29kZT4gdGFnIGZvciBiZXR0ZXIgZGF0ZS90aW1lIGhhbmRsaW5nIHRoYW4gdGhlIGJ1aWx0LWluICJzaW5jZSIgZnVuY3Rpb24uKTwvZGQ+CgkJPGR0Pjxjb2RlPmJhc2VkYXRlPSIiPC9jb2RlPjwvZHQ+CgkJPGRkPkFsbG93cyB0byBzZXQgYSBkYXRlL3RpbWUsIHdoaWNoIHdpbGwgYmUgdGFrZW4gYXMgYSBiYXNlIHRvIHJ1biBjYWxjdWxhdGlvbnMgYWdhaW5zdCAoaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCA8ZW0+bm93PC9lbT4pLiBUaGUgZGF0ZS90aW1lIGZvcm1hdCBzaG91bGQgYWRoZXJlIHRvIHRoZSB1c3VhbCBzeW50YXggKGZvciBleGFtcGxlcyBzZWUgY29ycmVzcG9uZGluZyBkYXRlIGFuZCB0aW1lIHNlY3Rpb24gb24gdGhpcyA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGFyL21hbnVhbC9odG1sX2NoYXB0ZXIvdGFyXzcuaHRtbCNTRUMxMDAiPkdOVSBtYW51YWwgcGFnZTwvYT4pLjwvZGQ+Cgk8L2RsPgoKICAgIDxwPkFkZGl0aW9uYWxseSwgdGhlc2UgYXJndW1lbnRzIGNhbiBiZSBwYXNzZWQgdG8gdGhlIHBsdWdpbi4gKFRoZXkncmUgbm90IG5lY2Vzc2FyeSBmb3IgYmFzaWMgdXNlIHdpdGggRW5nbGlzaCBsYW5ndWFnZS4pPC9wPgoKICAgIDxkbD4KICAgICAgICA8ZHQ+PGNvZGU+bGFuZz0iIjwvY29kZT48L2R0PgoJCTxkZD5TZXRzIGEgbGFuZ3VhZ2UgKHR3byBjaGFycykgZm9yIHVuaXQgd29yZHM7IHNlZSBwbHVnaW4gc291cmNlIGZvciBsYW5ndWFnZXMgcHJvdmlkZWQgYW5kIGhpbnRzIG9uIGhvdyB0byBhZGQgb3RoZXJzLiBJZiBub3Qgc2V0LCB0aGUgcGx1Z2luIHRyaWVzIHRoZSBzaXRlIHdpZGUgbGFuZ3VhZ2Ugc2V0dGluZywgb3RoZXJ3aXNlICYjODIxNjtlbiYjODIxNzsgaXMgYXNzdW1lZC48L2RkPgogICAgICAgIDxkdD48Y29kZT5zaW1wbGVwbHVyYWxzPSIiPC9jb2RlPjwvZHQ+CgkJPGRkPklmIHNldCB0byBhIG5vbi16ZXJvIG51bWJlciwgaW5kaWNhdGVzIHdoaWNoIGFtb3VudCB0cmlnZ2VycyB0aGUgcGx1cmFsIGZvcm0gKGUuIGcuICYjODIxNjt5ZWFycyYjODIxNzsgaW5zdGVhZCBvZiAmIzgyMTY7eWVhciYjODIxNzspLiBJZiBzZXQgdG8gemVybywgdHVybnMgb24gc3BlY2lhbCB3b3JkIGZvcm1zIGhhbmRsaW5nIHRoYXQgYWx3YXlzIGZvbGxvd3MgdGhlIGxhc3QgZGlnaXQgKGUuIGcuIG5lY2Vzc2FyeSBmb3IgQ3plY2ggZGF0ZXMpLiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBhIGxhbmd1YWdlLXNwZWNpZmljIHZhbHVlICgyIGZvciBFbmdsaXNoLCAwIGZvciBDemVjaCkuPC9kZD4KICAgICAgICA8ZHQ+PGNvZGU+ZGVsaW1pdGVyPSIiPC9jb2RlPjwvZHQ+CgkJPGRkPlNldHMgc3RyaW5nIHRoYXQgc2hvdWxkIHNlcGFyYXRlIGluZGl2aWR1YWwgdmFsdWVzLiBJZiBub3Qgc2V0LCBhIGNvbW1hIHdpdGggYSBzcGFjZSBhcmUgYXNzdW1lZC48L2RkPgogICAgICAgIDxkdD48Y29kZT5sYXN0PSIiPC9jb2RlPjwvZHQ+CgkJPGRkPlNldHMgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgYSBmaW5hbCBkZWxpbWl0ZXIsIGkuIGUuIHRvIGdvIGJlZm9yZSB0aGUgbGFzdCB1c2VkIGRhdGUvdGltZSBpdGVtLiBJZiBub3Qgc3BlY2lmaWVkIChhbmQgbm8gZGVsaW1pdGVyIGlzIHNldCksIGRlZmF1bHRzIHRvIGxhbmd1YWdlIHNwZWNpZmljIHZhbHVlLCBlLiBnLiAiIGFuZCAiIGluIEVuZ2xpc2guPC9kZD4KCQk8ZHQ+PGNvZGU+bGltaXQ9IiI8L2NvZGU+PC9kdD4KCQk8ZGQ+TGltaXRzIG51bWJlciBvZiBkYXRlL3RpbWUgZW50aXRpZXMgcmV0dXJuZWQgdG8gdGhlIGZpcnN0IDxzdHJvbmc+bjwvc3Ryb25nPiBvZiB0aGVtLiBFLiBnLiBpZiB0aGUgZW50aXJlIHNldCBvZiB5ZWFyL21vbnRoL2RheS9ob3VyL21pbnV0ZSB2YWx1ZXMgd2FzIHRvIGJlIG91dHB1dHRlZCwgc2V0dGluZyB0aGlzIHByb3BlcnR5IHRvIDIgd291bGQgb25seSBvdXRwdXQgeWVhcnMgYW5kIG1vbnRocyAob3IgeWVhcnMgYW5kIGRheXMsIGlmIG1vbnRocyBhcmUgemVybyBhbmQgc28gb24pLjwvZGQ+CgkJPGR0Pjxjb2RlPnNpbmNlPSIiPC9jb2RlPjwvZHQ+CgkJPGRkPlRoZSB3b3JkIGF0dGFjaGVkIHRvIHRoZSByZXN1bHQgaW4gY2FzZSB0aGUgZXZlbnQgZGF0ZSBpcyBpbiB0aGUgcGFzdC4gVGhlcmUgaXMgbm8gZGVmYXVsdCB2YWx1ZS4gSWYgYm90aCA8ZW0+c2luY2U8L2VtPiBhbmQgPGVtPnVudGlsPC9lbT4gYXJlIHNwZWNpZmllZCwgdGhlIHBsdWdpbiB1c2Ugb25lIG9mIHRoZW0gYWNjb3JkaW5nIHRoZSBmaW5hbCByZXN1bHQuIERlZmF1bHRzIHRvIGxhbmd1YWdlIHNwZWNpZmljIHZhbHVlcyAocHJvdmlkZWQgdGhlIDxjb2RlPmF0dGFjaDwvY29kZT4gYXJndW1lbnQgaXMgc2V0KS48L2RkPgoJCTxkdD48Y29kZT51bnRpbD0iIjwvY29kZT48L2R0PgoJCTxkZD5UaGUgd29yZCBhdHRhY2hlZCB0byB0aGUgcmVzdWx0IGluIGNhc2UgdGhlIGV2ZW50IGRhdGUgaXMgaW4gdGhlIGZ1dHVyZS4gVGhlcmUgaXMgbm8gZGVmYXVsdCB2YWx1ZS4gSWYgYm90aCA8ZW0+c2luY2U8L2VtPiBhbmQgPGVtPnVudGlsPC9lbT4gYXJlIHNwZWNpZmllZCwgdGhlIHBsdWdpbiB1c2Ugb25lIG9mIHRoZW0gYWNjb3JkaW5nIHRoZSBmaW5hbCByZXN1bHQuIERlZmF1bHRzIHRvIGxhbmd1YWdlIHNwZWNpZmljIHZhbHVlcyAocHJvdmlkZWQgdGhlIDxjb2RlPmF0dGFjaDwvY29kZT4gYXJndW1lbnQgaXMgc2V0KS48L2RkPgoJCTxkdD48Y29kZT5hdHRhY2g9IiI8L2NvZGU+PC9kdD4KCQk8ZGQ+QSBzd2l0Y2ggdGhhdCB0dXJucyBvbiBhdHRhY2hpbmcgb2Ygc2luY2UvdW50aWwgd29yZHMgYW5kIGFsc28gc3BlY2lmaWVzIHdoZXRoZXIgdGhleSBhcmUgdG8gYmUgYXR0YWNoZWQgYmVmb3JlIG9yIGFmdGVyIHRoZSByZXN1bHQuIFZhbGlkIHZhbHVlcyBhcmUgImJlZm9yZSIsICJhZnRlciIgYW5kICJhdXRvIiAod2hpY2ggd2lsbCB1c2UgdGhlIGxhbmd1YWdlIHNwZWNpZmljIHBvc2l0aW9uKS4gVGhlcmUgaXMgbm8gZGVmYXVsdCB2YWx1ZSwgc28geW91IGhhdmUgdG8gcHJvdmlkZSB0aGlzIGFyZ3VtZW50IHRvIHVzZSB0aGlzIGZlYXR1cmUuPC9kZD4KCQk8ZHQ+PGNvZGU+d3JhcHRhZz0iIjwvY29kZT48L2R0PgoJCTxkZD5TZXRzIHRoZSB0YWcgdG8gd3JhcCB0aGUgcmVzdWx0IHdpdGggKGUuIGcuICJzcGFuIikuIFVzZSBvbmx5IHRoZSB0YWcgbmFtZSwgbm90IHRoZSBicmFja2V0cyBvciBhbnl0aGluZy48L2RkPgoJCTxkdD48Y29kZT5jbGFzcz0iIjwvY29kZT48L2R0PgoJCTxkZD5TZXRzIHRoZSBDU1MgY2xhc3MgZm9yIHRoZSB3cmFwdGFnIChlLiBnLiAiYXJ0aWNsZURhdGUiKSBmb3Igc3R5bGluZyBwdXJwb3Nlcy48L2RkPgogICAgPC9kbD4KCiAgICA8cD5UaGUgcGx1Z2luIGlzIGJhc2VkIHVwb24gYSBzY3JpcHQgd3JpdHRlbiBieSA8YSBocmVmPSJodHRwOi8vd3d3LmthdGhtYW5uLmNvbS91cC8iPk1hcmsgSC4gS2F0aG1hbm48L2E+LjwvcD4iO3M6NDoiY29kZSI7czoxMTA2MToiZnVuY3Rpb24gZmhhX3RpbWVfZGlmZigkYXR0cykgew0KDQoJaWYgKGlzX2FycmF5KCRhdHRzKSkgZXh0cmFjdCgkYXR0cyk7DQoNCi8qDQoJLy8gZGVjbGFyZSB5b3VyIGxhbmd1YWdlIGhlcmUgKGUuIGcuICdkZScgZm9yIEdlcm1hbiBldGMuKQ0KCSRsID0gJ2VuJzsNCgkkd29yZHNbXSA9ICRsOw0KCSR3b3Jkc1skbF0gPSBhcnJheSgnc2ltcGxlcGx1cmFscycsJ3llYXInLCdtb250aCcsJ2RheScsJ2hvdXInLCdtaW51dGUnLCdvdmVycmlkZScsJ3NpbmNlJywndW50aWwnLCdhdHRhY2gnLCdsYXN0Jyk7DQoJLy8gYW4gaW50ZWdlciBmb3Igc2ltcGxlIHBsdXJhbHMgLSBlbnRlciB0aGUgZmlyc3QgbnVtYmVyIHRoYXQgdXNlcyBhIHBsdXJhbCBmb3JtICh1c3VhbGx5IDIpDQoJLy8gb3IgemVybyB0byBhY3RpdmF0ZSBsYXN0LWRpZ2l0IHNwZWNpZmljIGZvcm1zIChlLiBnLiBmb3IgQ3plY2ggbGFuZ3VhZ2UpDQoJJHdvcmRzWyRsXVsnc2ltcGxlcGx1cmFscyddID0gMjsNCgkvLyByZXBsYWNlIG51bWJlcnMgd2l0aCBhcHByb3ByaWF0ZSB3b3JkIGZvcm1zIGZvciB0aGVzZSBhbW91bnRzIChlLiBnLiAneWVhcnMnLCAneWVhcicgZXRjLikNCgkvLyBpZiB1c2luZyBzaW1wbGVwbHVyYWxzLCBvbmx5IGZpcnN0IHR3byBlbnRyaWVzIG5lZWQgdG8gYmUgZW50ZXJlZCAoMCBpcyBwbHVyYWwgZm9ybSwgMSBpcyBzaW5ndWxhciBmb3JtKQ0KCSR3b3Jkc1skbF1bJ3llYXInXSAgID0gYXJyYXkoJzAnLCcxJywnMicsJzMnLCc0JywnNScsJzYnLCc3JywnOCcsJzknKTsNCgkkd29yZHNbJGxdWydtb250aCddICA9IGFycmF5KCcwJywnMScsJzInLCczJywnNCcsJzUnLCc2JywnNycsJzgnLCc5Jyk7DQoJJHdvcmRzWyRsXVsnZGF5J10gICAgPSBhcnJheSgnMCcsJzEnLCcyJywnMycsJzQnLCc1JywnNicsJzcnLCc4JywnOScpOw0KCSR3b3Jkc1skbF1bJ2hvdXInXSAgID0gYXJyYXkoJzAnLCcxJywnMicsJzMnLCc0JywnNScsJzYnLCc3JywnOCcsJzknKTsNCgkkd29yZHNbJGxdWydtaW51dGUnXSA9IGFycmF5KCcwJywnMScsJzInLCczJywnNCcsJzUnLCc2JywnNycsJzgnLCc5Jyk7DQoJLy8gaWYgTk9UIHVzaW5nIHNpbXBsZXBsdXJhbHMsIGZpbGwgYXJyYXkgd2l0aCBudW1iZXJzLCB3aGljaCBBTFdBWVMgZ2V0IGEgcGx1cmFsIGZvcm0gKGlnbm9yaW5nIHRoZSBlbmRpbmcgZGlnaXQpDQoJJHdvcmRzWyRsXVsnb3ZlcnJpZGUnXSA9IGFycmF5KDExLDEyLDEzLDE0KTsNCgkvLyB3b3JkcyB0byBhdHRhY2ggdG8gdGhlIGZpbmFsIHJlc3VsdCBpbiBjYXNlIG9mIGEgcGFzdC9mdXR1cmUgZXZlbnQgZGF0ZQ0KCSR3b3Jkc1skbF1bJ3NpbmNlJ10gPSAnJzsNCgkkd29yZHNbJGxdWyd1bnRpbCddID0gJyc7DQoJLy8gcG9zaXRpb24gd2hlcmUgdG8gYXR0YWNoIHRoZSBhYm92ZSB3b3JkcywgdmFsaWQgdmFsdWVzIGFyZSAnYmVmb3JlJyBhbmQgJ2FmdGVyJw0KCSR3b3Jkc1skbF1bJ2F0dGFjaCddID0gJyc7DQoJLy8gd29yZCB0byB1c2UgYXMgYSBmaW5hbCBkZWxpbWl0ZXIgKGJlZm9yZSB0aGUgbGFzdCB1c2VkIGRhdGUvaXRlbSBpdGVtKQ0KCSR3b3Jkc1skbF1bJ2xhc3QnXSA9ICcnOw0KKi8NCgkNCgkkbCA9ICdlbic7DQoJJHdvcmRzW10gPSAkbDsNCgkkd29yZHNbJGxdID0gYXJyYXkoJ3NpbXBsZXBsdXJhbHMnLCd5ZWFyJywnbW9udGgnLCdkYXknLCdob3VyJywnbWludXRlJywnb3ZlcnJpZGUnLCdzaW5jZScsJ3VudGlsJywnYXR0YWNoJywnbGFzdCcpOw0KCSR3b3Jkc1skbF1bJ3NpbXBsZXBsdXJhbHMnXSA9IDI7DQoJJHdvcmRzWyRsXVsneWVhciddICAgPSBhcnJheSgneWVhcnMnLCd5ZWFyJyk7DQoJJHdvcmRzWyRsXVsnbW9udGgnXSAgPSBhcnJheSgnbW9udGhzJywnbW9udGgnKTsNCgkkd29yZHNbJGxdWydkYXknXSAgICA9IGFycmF5KCdkYXlzJywnZGF5Jyk7DQoJJHdvcmRzWyRsXVsnaG91ciddICAgPSBhcnJheSgnaG91cnMnLCdob3VyJyk7DQoJJHdvcmRzWyRsXVsnbWludXRlJ10gPSBhcnJheSgnbWludXRlcycsJ21pbnV0ZScpOw0KCSR3b3Jkc1skbF1bJ292ZXJyaWRlJ10gPSBhcnJheSgwKTsNCgkkd29yZHNbJGxdWydzaW5jZSddID0gJ3NpbmNlJzsNCgkkd29yZHNbJGxdWyd1bnRpbCddID0gJ3VudGlsJzsNCgkkd29yZHNbJGxdWydhdHRhY2gnXSA9ICdhZnRlcic7DQoJJHdvcmRzWyRsXVsnbGFzdCddID0gJyBhbmQgJzsNCg0KCSRsID0gJ2RlJzsNCgkkd29yZHNbXSA9ICRsOw0KCSR3b3Jkc1skbF0gPSBhcnJheSgnc2ltcGxlcGx1cmFscycsJ3llYXInLCdtb250aCcsJ2RheScsJ2hvdXInLCdtaW51dGUnLCdvdmVycmlkZScsJ3NpbmNlJywndW50aWwnLCdhdHRhY2gnLCdsYXN0Jyk7DQoJJHdvcmRzWyRsXVsnc2ltcGxlcGx1cmFscyddID0gMjsNCgkkd29yZHNbJGxdWyd5ZWFyJ10gICA9IGFycmF5KCdKYWhyZScsJ0phaHInKTsNCgkkd29yZHNbJGxdWydtb250aCddICA9IGFycmF5KCdNb25hdGUnLCdNb25hdCcpOw0KCSR3b3Jkc1skbF1bJ2RheSddICAgID0gYXJyYXkoJ1RhZ2UnLCdUYWcnKTsNCgkkd29yZHNbJGxdWydob3VyJ10gICA9IGFycmF5KCdTdHVuZGVuJywnU3R1bmRlJyk7DQoJJHdvcmRzWyRsXVsnbWludXRlJ10gPSBhcnJheSgnTWludXRlbicsJ01pbnV0ZScpOw0KCSR3b3Jkc1skbF1bJ292ZXJyaWRlJ10gPSBhcnJheSgwKTsNCgkkd29yZHNbJGxdWydzaW5jZSddID0gJ3NjaG9uJzsNCgkkd29yZHNbJGxdWyd1bnRpbCddID0gJ25vY2gnOw0KCSR3b3Jkc1skbF1bJ2F0dGFjaCddID0gJ2JlZm9yZSc7DQoJJHdvcmRzWyRsXVsnbGFzdCddID0gJyB1bmQgJzsNCg0KCSRsID0gJ2N6JzsNCgkkd29yZHNbXSA9ICRsOw0KCSR3b3Jkc1skbF0gPSBhcnJheSgnc2ltcGxlcGx1cmFscycsJ3llYXInLCdtb250aCcsJ2RheScsJ2hvdXInLCdtaW51dGUnLCdvdmVycmlkZScsJ3NpbmNlJywndW50aWwnLCdhdHRhY2gnLCdsYXN0Jyk7DQoJJHdvcmRzWyRsXVsnc2ltcGxlcGx1cmFscyddID0gMDsNCgkkd29yZHNbJGxdWyd5ZWFyJ10gICA9IGFycmF5KCdsZXQnLCdyb2snLCdyb2t5Jywncm9reScsJ3Jva3knLCdsZXQnLCdsZXQnLCdsZXQnLCdsZXQnLCdsZXQnKTsNCgkkd29yZHNbJGxdWydtb250aCddICA9IGFycmF5KCdtP3PDrWM/JywnbT9zw61jJywnbT9zw61jZScsJ20/c8OtY2UnLCdtP3PDrWNlJywnbT9zw61jPycsJ20/c8OtYz8nLCdtP3PDrWM/JywnbT9zw61jPycsJ20/c8OtYz8nKTsNCgkkd29yZHNbJGxdWydkYXknXSAgICA9IGFycmF5KCdkbj8nLCdkZW4nLCdkbnknLCdkbnknLCdkbnknLCdkbj8nLCdkbj8nLCdkbj8nLCdkbj8nLCdkbj8nKTsNCgkkd29yZHNbJGxdWydob3VyJ10gICA9IGFycmF5KCdob2RpbicsJ2hvZGluYScsJ2hvZGlueScsJ2hvZGlueScsJ2hvZGlueScsJ2hvZGluJywnaG9kaW4nLCdob2RpbicsJ2hvZGluJywnaG9kaW4nKTsNCgkkd29yZHNbJGxdWydtaW51dGUnXSA9IGFycmF5KCdtaW51dCcsJ21pbnV0YScsJ21pbnV0eScsJ21pbnV0eScsJ21pbnV0eScsJ21pbnV0JywnbWludXQnLCdtaW51dCcsJ21pbnV0JywnbWludXQnKTsNCgkkd29yZHNbJGxdWydvdmVycmlkZSddID0gYXJyYXkoMTEsMTIsMTMsMTQpOw0KCSR3b3Jkc1skbF1bJ3NpbmNlJ10gPSAnamk/JzsNCgkkd29yZHNbJGxdWyd1bnRpbCddID0gJ2plP3Q/JzsNCgkkd29yZHNbJGxdWydhdHRhY2gnXSA9ICdiZWZvcmUnOw0KCSR3b3Jkc1skbF1bJ2xhc3QnXSA9ICcgYSAnOw0KCQ0KCSRsID0gJ25sJzsNCgkkd29yZHNbXSA9ICRsOw0KCSR3b3Jkc1skbF0gPSBhcnJheSgnc2ltcGxlcGx1cmFscycsJ3llYXInLCdtb250aCcsJ2RheScsJ2hvdXInLCdtaW51dGUnLCdvdmVycmlkZScsJ3NpbmNlJywndW50aWwnLCdhdHRhY2gnLCdsYXN0Jyk7DQoJJHdvcmRzWyRsXVsnc2ltcGxlcGx1cmFscyddID0gMjsNCgkkd29yZHNbJGxdWyd5ZWFyJ10gICA9IGFycmF5KCdqYWFyJywnamFhcicpOw0KCSR3b3Jkc1skbF1bJ21vbnRoJ10gID0gYXJyYXkoJ21hYW5kZW4nLCdtYWFuZCcpOw0KCSR3b3Jkc1skbF1bJ2RheSddICAgID0gYXJyYXkoJ2RhZ2VuJywnZGFnJyk7DQoJJHdvcmRzWyRsXVsnaG91ciddICAgPSBhcnJheSgndXVyJywndXVyJyk7DQoJJHdvcmRzWyRsXVsnbWludXRlJ10gPSBhcnJheSgnbWludXRlbicsJ21pbnV1dCcpOw0KCSR3b3Jkc1skbF1bJ292ZXJyaWRlJ10gPSBhcnJheSgwKTsNCgkkd29yZHNbJGxdWydzaW5jZSddID0gJyc7DQoJJHdvcmRzWyRsXVsndW50aWwnXSA9ICcnOw0KCSR3b3Jkc1skbF1bJ2F0dGFjaCddID0gJ2JlZm9yZSc7DQoJJHdvcmRzWyRsXVsnbGFzdCddID0gJyc7DQoNCg0KCWlmIChlbXB0eSgkbGFuZykpICRsYW5nID0gTEFORzsNCglpZiAoIWluX2FycmF5KHN0cnRvbG93ZXIoJGxhbmcpLCAkd29yZHMpKSAkbGFuZyA9ICdlbic7DQoJCWVsc2UgJGxhbmcgPSBzdHJ0b2xvd2VyKCRsYW5nKTsNCglpZiAoZW1wdHkoJHNpbXBsZXBsdXJhbHMpKSAkc2ltcGxlcGx1cmFscyA9ICR3b3Jkc1skbGFuZ11bJ3NpbXBsZXBsdXJhbHMnXTsNCglpZiAoZW1wdHkoJGxhc3QpKSAkbGFzdCA9IChlbXB0eSgkZGVsaW1pdGVyKSkgPyAkd29yZHNbJGxhbmddWydsYXN0J10gOiAkZGVsaW1pdGVyOw0KCWlmIChlbXB0eSgkZGVsaW1pdGVyKSkgJGRlbGltaXRlciA9ICcsICc7DQoJaWYgKGVtcHR5KCRjbGFzcykpICRjbGFzc1dvcmQgPSAnJzsNCgkJZWxzZSAkY2xhc3NXb3JkID0gIiBjbGFzcz1cIiRjbGFzc1wiIjsNCglpZiAoZW1wdHkoJHdyYXB0YWcpKSB7DQoJCSR3cmFwT3BlbiA9ICcnOw0KCQkkd3JhcENsb3NlID0gJyc7DQoJfQ0KCWVsc2Ugew0KCQkkd3JhcE9wZW4gPSAiPCR3cmFwdGFnJGNsYXNzV29yZD4iOw0KCQkkd3JhcENsb3NlID0gIjwvJHdyYXB0YWc+IjsNCgl9DQoJaWYgKGVtcHR5KCRhdHRhY2gpKSAkYXR0YWNoID0gJ25vJzsNCgkgIGVsc2VpZiAoJGF0dGFjaCA9PSAnYXV0bycpICRhdHRhY2ggPSAkd29yZHNbJGxhbmddWydhdHRhY2gnXTsNCglpZiAoZW1wdHkoJHNpbmNlKSkgJHNpbmNlID0gJHdvcmRzWyRsYW5nXVsnc2luY2UnXTsNCglpZiAoZW1wdHkoJHVudGlsKSkgJHVudGlsID0gJHdvcmRzWyRsYW5nXVsndW50aWwnXTsNCglpZiAoZW1wdHkoJGxpbWl0KSB8fCAkbGltaXQgPCAxKSAkbGltaXQgPSA1Ow0KDQoJaWYgKCFlbXB0eSgkcG9zdGVkKSkgew0KCQlnbG9iYWwgJHRoaXNhcnRpY2xlOw0KCQkkeWVhciA9IGRhdGUoJ1knLCAkdGhpc2FydGljbGVbJ3Bvc3RlZCddKTsNCgkJJG1vbnRoID0gZGF0ZSgnbicsICR0aGlzYXJ0aWNsZVsncG9zdGVkJ10pOw0KCQkkZGF5ID0gZGF0ZSgnaicsICR0aGlzYXJ0aWNsZVsncG9zdGVkJ10pOw0KCQkkaG91ciA9IGRhdGUoJ0cnLCAkdGhpc2FydGljbGVbJ3Bvc3RlZCddKTsNCgkJJG1pbnV0ZSA9IGRhdGUoJ2knLCAkdGhpc2FydGljbGVbJ3Bvc3RlZCddKTsNCgl9DQoNCgkkdG9kYXkgPSAoIWVtcHR5KCRmcm9tKSkgPyBzdHJ0b3RpbWUoJGZyb20pIDogdGltZSgpOw0KCSR0b2RheVllYXIgICAgPSBkYXRlKCdZJywgJHRvZGF5KTsNCgkkdG9kYXlNb250aCAgPSBkYXRlKCduJywgJHRvZGF5KTsNCgkkdG9kYXlEYXkgICAgPSBkYXRlKCdqJywgJHRvZGF5KTsNCgkkdG9kYXlIb3VyICAgPSBkYXRlKCdHJywgJHRvZGF5KTsNCgkkdG9kYXlNaW51dGUgPSBkYXRlKCdpJywgJHRvZGF5KTsNCgkkbW9udGhkYXkgICAgPSBkYXRlKCdtZCcsICR0b2RheSk7DQoNCglpZiAoaXNzZXQoJG1vbnRoKSkgJG1vbnRoID0gc3RyX3BhZCgkbW9udGgsMiwnMCcsU1RSX1BBRF9MRUZUKTsNCglpZiAoaXNzZXQoJGRheSkpICRkYXkgPSBzdHJfcGFkKCRkYXksMiwnMCcsU1RSX1BBRF9MRUZUKTsNCglpZiAoaXNzZXQoJGhvdXIpKSAkaG91ciA9IHN0cl9wYWQoJGhvdXIsMiwnMCcsU1RSX1BBRF9MRUZUKTsNCglpZiAoaXNzZXQoJG1pbnV0ZSkpICRtaW51dGUgPSBzdHJfcGFkKCRtaW51dGUsMiwnMCcsU1RSX1BBRF9MRUZUKTsNCgkkbSA9IChpc3NldCgkbWludXRlKT8kbWludXRlOicwMCcpOw0KCSRobSA9IChpc3NldCgkaG91cik/JGhvdXI6JzAwJykuJG07DQoJJGRobSA9IChpc3NldCgkZGF5KT8kZGF5OicwMScpLiRobTsNCgkkbWRobSA9IChpc3NldCgkbW9udGgpPyRtb250aDonMDEnKS4kZGhtOw0KCSRwYXN0ID0gKHN0cnRvdGltZSgoaXNzZXQoJHllYXIpPyR5ZWFyOicwMCcpLictJy4oaXNzZXQoJG1vbnRoKT8kbW9udGg6JzAxJykuJy0nLihpc3NldCgkZGF5KT8kZGF5OicwMScpLicgJy4oaXNzZXQoJGhvdXIpPyRob3VyOicwMCcpLic6Jy4oaXNzZXQoJG1pbnV0ZSk/JG1pbnV0ZTonMDAnKSkgPCB0aW1lKCkpID8gKHRydWUpIDogKGZhbHNlKTsNCg0KCWlmIChpc3NldCgkeWVhcikgJiYgJGxpbWl0ID4gMCkgew0KDQoJCSR5ZWFycyA9IGFicygkdG9kYXlZZWFyIC0gJHllYXIpOw0KCQlpZiAoKCRwYXN0ICYmIGRhdGUoJ21kSGknLCAkdG9kYXkpIDwgJG1kaG0pIHx8ICghJHBhc3QgJiYgZGF0ZSgnbWRIaScsICR0b2RheSkgPiAkbWRobSkpICR5ZWFycy0tOw0KDQoJCWlmICghJHNpbXBsZXBsdXJhbHMpIHsNCgkJCSR5ZWFyV29yZCA9ICgkeWVhcnMgPiAwKSA/ICR3b3Jkc1skbGFuZ11bJ3llYXInXVtzdWJzdHIoJHllYXJzLC0xKV0gOiAnJzsNCgkJCWlmIChpbl9hcnJheShzdWJzdHIoJHllYXJzLC0yKSwkd29yZHNbJGxhbmddWydvdmVycmlkZSddKSAhPT0gZmFsc2UpICR5ZWFyV29yZCA9ICR3b3Jkc1skbGFuZ11bJ3llYXInXVswXTsNCgkJfQ0KCQllbHNlICR5ZWFyV29yZCA9ICgkeWVhcnMgPCAkc2ltcGxlcGx1cmFscykgPyAkd29yZHNbJGxhbmddWyd5ZWFyJ11bMV0gOiAkd29yZHNbJGxhbmddWyd5ZWFyJ11bMF07DQoNCgkJaWYgKCR5ZWFycyA+IDApICRsaW1pdC0tOw0KDQoNCgkJaWYgKGlzc2V0KCRtb250aCkgJiYgJGxpbWl0ID4gMCkgew0KDQoJCQlpZiAoJHBhc3QpICRtb250aHMgPSAoJHRvZGF5TW9udGggPiAkbW9udGgpID8gKCR0b2RheU1vbnRoIC0gJG1vbnRoKSA6ICgxMiAtICRtb250aCArICR0b2RheU1vbnRoKTsNCgkJCWVsc2UgICAgICAgJG1vbnRocyA9ICgkdG9kYXlNb250aCA8ICRtb250aCkgPyAoJG1vbnRoIC0gJHRvZGF5TW9udGgpIDogKDEyIC0gJHRvZGF5TW9udGggKyAkbW9udGgpOw0KDQoJCQlpZiAoKCRwYXN0ICYmIGRhdGUoJ2RIaScsICR0b2RheSkgPCAkZGhtKSB8fCAoISRwYXN0ICYmIGRhdGUoJ2RIaScsICR0b2RheSkgPiAkZGhtKSkgJG1vbnRocy0tOw0KCQkJaWYgKCRtb250aHMgPT0gMTIpICRtb250aHMgPSAwOw0KDQoJCQlpZiAoISRzaW1wbGVwbHVyYWxzKSB7DQoJCQkJJG1vbnRoV29yZCA9ICgkbW9udGhzID4gMCkgPyAkd29yZHNbJGxhbmddWydtb250aCddW3N1YnN0cigkbW9udGhzLC0xKV0gOiAnJzsNCgkJCQlpZiAoaW5fYXJyYXkoc3Vic3RyKCRtb250aHMsLTIpLCR3b3Jkc1skbGFuZ11bJ292ZXJyaWRlJ10pICE9PSBmYWxzZSkgJG1vbnRoV29yZCA9ICR3b3Jkc1skbGFuZ11bJ21vbnRoJ11bMF07DQoJCQl9DQoJCQllbHNlICRtb250aFdvcmQgPSAoJG1vbnRocyA8ICRzaW1wbGVwbHVyYWxzKSA/ICR3b3Jkc1skbGFuZ11bJ21vbnRoJ11bMV0gOiAkd29yZHNbJGxhbmddWydtb250aCddWzBdOw0KDQoJCQlpZiAoJG1vbnRocyA+IDApICRsaW1pdC0tOw0KDQoNCgkJCWlmIChpc3NldCgkZGF5KSAmJiAkbGltaXQgPiAwKSB7DQoNCgkJCQlpZiAoJHBhc3QpICRkYXlzID0gKCR0b2RheURheSA+ICRkYXkpID8gKCR0b2RheURheSAtICRkYXkpIDogKGRhdGUoJ3QnLCBzdHJ0b3RpbWUoIiR5ZWFyLyRtb250aC8kZGF5IikpIC0gJGRheSArICR0b2RheURheSk7DQoJCQkJZWxzZSAgICAgICAkZGF5cyA9ICgkdG9kYXlEYXkgPCAkZGF5KSA/ICgkZGF5IC0gJHRvZGF5RGF5KSA6IChkYXRlKCd0Jywgc3RydG90aW1lKCgkbW9udGg9PTEpPygkeWVhci0xKTooJHllYXIpLicvJy4oJG1vbnRoPT0xKT8oMTIpOigkbW9udGgtMSkuJy8nLiRkYXkpKSAtICR0b2RheURheSArICRkYXkpOw0KCQkJCWlmICgoJHBhc3QgJiYgZGF0ZSgnSGknLCAkdG9kYXkpIDwgJGhtKSB8fCAoISRwYXN0ICYmIGRhdGUoJ0hpJywgJHRvZGF5KSA+ICRobSkpICRkYXlzLS07DQoJCQkJJGNvbXBEYXRlID0gKCRwYXN0KSA/IGRhdGUoJ3QnLCBzdHJ0b3RpbWUoIiR5ZWFyLyRtb250aC8kZGF5IikpIDogZGF0ZSgndCcsIHN0cnRvdGltZSgoJG1vbnRoPT0xKT8oJHllYXItMSk6KCR5ZWFyKS4nLycuKCRtb250aD09MSk/KDEyKTooJG1vbnRoLTEpLicvJy4kZGF5KSk7DQoJCQkJaWYgKCRkYXlzID09ICRjb21wRGF0ZSkgJGRheXMgPSAwOw0KDQoJCQkJaWYgKCEkc2ltcGxlcGx1cmFscykgew0KCQkJCQkkZGF5V29yZCA9ICgkZGF5cyA+IDApID8gJHdvcmRzWyRsYW5nXVsnZGF5J11bc3Vic3RyKCRkYXlzLC0xKV0gOiAnJzsNCgkJCQkJaWYgKGluX2FycmF5KHN1YnN0cigkZGF5cywtMiksJHdvcmRzWyRsYW5nXVsnb3ZlcnJpZGUnXSkgIT09IGZhbHNlKSAkZGF5V29yZCA9ICR3b3Jkc1skbGFuZ11bJ2RheSddWzBdOw0KCQkJCX0NCgkJCQllbHNlICRkYXlXb3JkID0gKCRkYXlzIDwgJHNpbXBsZXBsdXJhbHMpID8gJHdvcmRzWyRsYW5nXVsnZGF5J11bMV0gOiAkd29yZHNbJGxhbmddWydkYXknXVswXTsNCg0KCQkJCWlmICgkZGF5cyA+IDApICRsaW1pdC0tOw0KDQoNCgkJCQlpZiAoaXNzZXQoJGhvdXIpICYmICRsaW1pdCA+IDApIHsNCg0KCQkJCQlpZiAoJHBhc3QpICRob3VycyA9ICgkdG9kYXlIb3VyID4gJGhvdXIpID8gKCR0b2RheUhvdXIgLSAkaG91cikgOiAoMjQgLSAkaG91ciArICR0b2RheUhvdXIpOw0KCQkJCQllbHNlICAgICAgICRob3VycyA9ICgkdG9kYXlIb3VyIDwgJGhvdXIpID8gKCRob3VyIC0gJHRvZGF5SG91cikgOiAoMjQgLSAkdG9kYXlIb3VyICsgJGhvdXIpOw0KDQoJCQkJCWlmICgoJHBhc3QgJiYgZGF0ZSgnaScsICR0b2RheSkgPCAkbWludXRlKSB8fCAoISRwYXN0ICYmIGRhdGUoJ2knLCAkdG9kYXkpID4gJG1pbnV0ZSkpICRob3Vycy0tOw0KCQkJCQlpZiAoJGhvdXJzID09IDI0KSAkaG91cnMgPSAwOw0KDQoJCQkJCWlmICghJHNpbXBsZXBsdXJhbHMpIHsNCgkJCQkJCSRob3VyV29yZCA9ICgkaG91cnMgPiAwKSA/ICR3b3Jkc1skbGFuZ11bJ2hvdXInXVtzdWJzdHIoJGhvdXJzLC0xKV0gOiAnJzsNCgkJCQkJCWlmIChpbl9hcnJheShzdWJzdHIoJGhvdXJzLC0yKSwkd29yZHNbJGxhbmddWydvdmVycmlkZSddKSAhPT0gZmFsc2UpICRob3VyV29yZCA9ICR3b3Jkc1skbGFuZ11bJ2hvdXInXVswXTsNCgkJCQkJfQ0KCQkJCQllbHNlICRob3VyV29yZCA9ICgkaG91cnMgPCAkc2ltcGxlcGx1cmFscykgPyAkd29yZHNbJGxhbmddWydob3VyJ11bMV0gOiAkd29yZHNbJGxhbmddWydob3VyJ11bMF07DQoNCgkJCQkJaWYgKCRob3VycyA+IDApICRsaW1pdC0tOw0KDQoNCgkJCQkJaWYgKGlzc2V0KCRtaW51dGUpICYmICRsaW1pdCA+IDApIHsNCg0KCQkJCQkJaWYgKCRwYXN0KSAkbWludXRlcyA9ICgkdG9kYXlNaW51dGUgPiAkbWludXRlKSA/ICgkdG9kYXlNaW51dGUgLSAkbWludXRlKSA6ICg2MCAtICRtaW51dGUgKyAkdG9kYXlNaW51dGUpOw0KCQkJCQkJZWxzZSAgICAgICAkbWludXRlcyA9ICgkdG9kYXlNaW51dGUgPCAkbWludXRlKSA/ICgkbWludXRlIC0gJHRvZGF5TWludXRlKSA6ICg2MCAtICR0b2RheU1pbnV0ZSArICRtaW51dGUpOw0KCQkJCQkJaWYgKCRtaW51dGVzID09IDYwKSAkbWludXRlcyA9IDA7DQoNCgkJCQkJCWlmICghJHNpbXBsZXBsdXJhbHMpIHsNCgkJCQkJCQkkbWludXRlV29yZCA9ICgkbWludXRlcyA+IDApID8gJHdvcmRzWyRsYW5nXVsnbWludXRlJ11bc3Vic3RyKCRtaW51dGVzLC0xKV0gOiAnJzsNCgkJCQkJCQlpZiAoaW5fYXJyYXkoc3Vic3RyKCRtaW51dGVzLC0yKSwkd29yZHNbJGxhbmddWydvdmVycmlkZSddKSAhPT0gZmFsc2UpICRtaW51dGVXb3JkID0gJHdvcmRzWyRsYW5nXVsnbWludXRlJ11bMF07DQoJCQkJCQl9DQoJCQkJCQllbHNlICRtaW51dGVXb3JkID0gKCRtaW51dGVzIDwgJHNpbXBsZXBsdXJhbHMpID8gJHdvcmRzWyRsYW5nXVsnbWludXRlJ11bMV0gOiAkd29yZHNbJGxhbmddWydtaW51dGUnXVswXTsNCg0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJaWYgKCFlbXB0eSgkbWludXRlcykpICRvdXQgPSAoZW1wdHkoJG91dCkpID8gKCIkbGFzdCRtaW51dGVzICRtaW51dGVXb3JkIikgOiAoIiRkZWxpbWl0ZXIkbWludXRlcyAkbWludXRlV29yZCRvdXQiKTsNCglpZiAoIWVtcHR5KCRob3VycykpICRvdXQgPSAoZW1wdHkoJG91dCkpID8gKCIkbGFzdCRob3VycyAkaG91cldvcmQiKSA6ICgiJGRlbGltaXRlciRob3VycyAkaG91cldvcmQkb3V0Iik7DQoJaWYgKCFlbXB0eSgkZGF5cykpICRvdXQgPSAoZW1wdHkoJG91dCkpID8gKCIkbGFzdCRkYXlzICRkYXlXb3JkIikgOiAoIiRkZWxpbWl0ZXIkZGF5cyAkZGF5V29yZCRvdXQiKTsNCglpZiAoIWVtcHR5KCRtb250aHMpKSAkb3V0ID0gKGVtcHR5KCRvdXQpKSA/ICgiJGxhc3QkbW9udGhzICRtb250aFdvcmQiKSA6ICgiJGRlbGltaXRlciRtb250aHMgJG1vbnRoV29yZCRvdXQiKTsNCglpZiAoIWVtcHR5KCR5ZWFycykpICRvdXQgPSAoZW1wdHkoJG91dCkpID8gKCIkeWVhcnMgJHllYXJXb3JkIikgOiAoIiR5ZWFycyAkeWVhcldvcmQkb3V0Iik7DQoNCgkkdGVzdE91dCA9IHN0cnN0cigkb3V0LCAkZGVsaW1pdGVyKTsNCglpZiAoc3RybGVuKCR0ZXN0T3V0KSA9PSBzdHJsZW4oJG91dCkpICRvdXQgPSBzdWJzdHIoJG91dCwgc3RybGVuKCRkZWxpbWl0ZXIpKTsNCgkkdGVzdE91dCA9IHN0cnN0cigkb3V0LCAkbGFzdCk7DQoJaWYgKHN0cmxlbigkdGVzdE91dCkgPT0gc3RybGVuKCRvdXQpKSAkb3V0ID0gc3Vic3RyKCRvdXQsIHN0cmxlbigkbGFzdCkpOw0KDQoJaWYgKCRhdHRhY2ggPT0gJ2JlZm9yZScpICRvdXQgPSAoJHBhc3QpID8gKCIkc2luY2UgJG91dCIpIDogKCIkdW50aWwgJG91dCIpOw0KCWVsc2VpZiAoJGF0dGFjaCA9PSAnYWZ0ZXInKSAkb3V0ID0gKCRwYXN0KSA/ICgiJG91dCAkc2luY2UiKSA6ICgiJG91dCAkdW50aWwiKTsNCg0KCXJldHVybiAkd3JhcE9wZW4udHJpbSgkb3V0KS4kd3JhcENsb3NlOw0KfQ0KIjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjM6Im1kNSI7czozMjoiNzVjMmNjZTVlMmFhYWMwN2FkOGZjMDIyZDFjYjFiZjgiO30=

Last edited by mamash (2004-10-30 08:57:17)


Who’s gonna textdrive you home tonight?

Offline

#2 2004-04-17 16:49:21

Ray
Member
Registered: 2004-03-02
Posts: 154

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

Now that’s a allot of fun.

I set it up for all our family birthdates. My ten year old thinks it’s the coolest thing going ; )

Nice plugin mamash. Thanks 8 )

Offline

#3 2004-04-17 16:55:46

mamash
Member
From: Prague
Registered: 2004-02-21
Posts: 127
Website

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

Glad I could be of <del>help</del> fun. ;)

Edit: It shouldn’t be hard to turn it the other way around and make it output ‘time till’ information. Some other day…

Last edited by mamash (2004-04-17 16:58:26)


Who’s gonna textdrive you home tonight?

Offline

#4 2004-04-17 17:02:02

Ray
Member
Registered: 2004-03-02
Posts: 154

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

Now that would be handy.

XX day’s, XX hours, XX minutes, XX seconds until Txp is outta Gamma.

<i>(i couldn’t resist…all in good fun)</i>

@ )

Last edited by Ray (2004-04-17 17:03:35)

Offline

#5 2004-04-17 17:13:21

Ray
Member
Registered: 2004-03-02
Posts: 154

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

mamash,

where is the general plugin information stored on the server? file/folder…?

Offline

#6 2004-04-17 17:35:38

mamash
Member
From: Prague
Registered: 2004-02-21
Posts: 127
Website

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

“general plugin information”?

If you mean the description and the short help, it’s all stored in the installation file, which inserts it into your database.


Who’s gonna textdrive you home tonight?

Offline

#7 2004-04-17 19:26:02

Ray
Member
Registered: 2004-03-02
Posts: 154

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

Once it’s in the database….how can I access it to make alterations.

Specifically I’m thinking about adding an ID so that the style of the date can be changed via CSS. Set one rule in the style sheet and it changes the date (output) whenever/wherever it’s used.

Right now I have a span around your code.

<code><span style=“color:#c00;”><txp:fha_time_diff year=“2004” month=“3” day=“23” hour=“2” minute=“40” /></span></code>

To have an ID already embedded in the tag would be a nice touch.

Last edited by Ray (2004-04-17 19:26:36)

Offline

#8 2004-04-17 19:35:15

froehle
New Member
From: Minneapolis, MN
Registered: 2004-02-29
Posts: 5
Website

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

Ray, you can edit the code for the plugin on the plugin tab (in admin) in the Textpattern backend. The code itself is stored in your mysql database.

Offline

#9 2004-04-17 19:39:26

mamash
Member
From: Prague
Registered: 2004-02-21
Posts: 127
Website

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

Now I understand. Well, I was conceiving this as a ‘content’ plugin, and didn’t want to introduce any infrastructure. But maybe I could simply add ‘wraptag’ and ‘class’ tags as well.

For now, you can always go to your plugin admin area. Clicking on the plugin’s name will get you a source editing page. The outputting line is the last one on the bottom. Is that enough? :)


Who’s gonna textdrive you home tonight?

Offline

#10 2004-04-17 19:43:23

Ray
Member
Registered: 2004-03-02
Posts: 154

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

I was just thinking….a “class” would be better since the code could/would be used several times on the same page.

class=“timedif” (or some such)

“The outputting line is the last one on the bottom. Is that enough?”
Yes sir.

Thanks.

Offline

#11 2004-04-17 20:13:03

mamash
Member
From: Prague
Registered: 2004-02-21
Posts: 127
Website

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

Version 0.11:

  • The plugin now accepts a wraptag="" and a class="" parameter (e.g. wraptag="span" class="timeSince").

Re-download if you feel like.

Last edited by mamash (2004-04-17 21:31:12)


Who’s gonna textdrive you home tonight?

Offline

#12 2004-04-17 21:30:27

mamash
Member
From: Prague
Registered: 2004-02-21
Posts: 127
Website

Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator

Version 0.12

  • German language added (lang="de").

Last edited by mamash (2004-04-17 21:31:20)


Who’s gonna textdrive you home tonight?

Offline

Board footer

Powered by FluxBB