# Name: smd_short_url v0.21 # Type: Client side plugin # Canonical short URLs using article ID # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEzOiJzbWRfc2hvcnRfdXJsIjtzOjY6ImF1dGhvciI7czox MToiU3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjIxIjtzOjExOiJkZXNjcmlwdGlvbiI7 czozNzoiQ2Fub25pY2FsIHNob3J0IFVSTHMgdXNpbmcgYXJ0aWNsZSBJRCI7czo0OiJoZWxw IjtzOjI4NTc6IjxkaXYgaWQ9InNtZF9oZWxwIj4KCgk8aDE+c21kX3Nob3J0X3VybDwvaDE+ CgoJPHAgY2xhc3M9InJlcXVpcmVkIj5SZXF1aXJlcyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiA0LjIuMC48L3A+CgoJPHA+QWxsb3cgdmlzaXRvcnMgdG8gdXNlIHNob3J0IDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+cyBjb21wcmlzaW5nIGp1c3Qgc2l0ZS5jb20v YXJ0aWNsZV9JRCwgd2hpY2ggd2lsbCByZWRpcmVjdCB0byB0aGUgcmVhbCBhcnRpY2xlLjwv cD4KCgk8cD5JbnN0YWxsLiBBY3RpdmF0ZS4gRG9uZS48L3A+CgoJPGgyPkNhbm9uaWNhbCA8 Y29kZT4mbHQ7bGluayZndDs8L2NvZGU+IHRhZzwvaDI+CgoJPHA+SWYgeW91IHdpc2ggdG8g YWRkIHRoZSBjYW5vbmljYWwgPGNvZGU+Jmx0O2xpbmsmZ3Q7PC9jb2RlPiB0YWcgdG8geW91 ciBkb2N1bWVudCB0aGF0IGRlZmluZXMgdGhlIGFydGljbGUmIzgyMTc7cyBzaG9ydCA8c3Bh biBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBmb3Igc2VhcmNoIGVuZ2luZXMgdGhlbiBwdXQg PGNvZGU+Jmx0O3R4cDpzbWRfY2Fub25pY2FsIC8mZ3Q7PC9jb2RlPiBzb21ld2hlcmUgaW4g eW91ciA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IHNlY3Rpb24uIFJlbWVtYmVyIGl0IG11 c3QgZ28gaW5zaWRlIGEgPGNvZGU+Jmx0O3R4cDppZl9pbmRpdmlkdWFsX2FydGljbGUmZ3Q7 PC9jb2RlPiBjb25kaXRpb25hbCBvciBpdCB3aWxsIHRocm93IGFuIGVycm9yLjwvcD4KCgk8 cD5UaGUgdGFnIHRha2VzIG9uZSBvcHRpb25hbCBhdHRyaWJ1dGU6IDxjb2RlPnR5cGU8L2Nv ZGU+IGNhbiBlaXRoZXIgYmUgPGNvZGU+bGluazwvY29kZT4gKHRoZSBkZWZhdWx0KSB0byBv dXRwdXQgdGhlIGZ1bGwgZm9ybWF0dGVkIGNhbm9uaWNhbCBsaW5rIHRhZywgb3IgPGNvZGU+ dXJsPC9jb2RlPiB0byBvdXRwdXQgdGhlIHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiBzbyB5b3UgbWF5IHVzZSBpdCBpbiB5b3VyIG93biBtYW5uZXIuPC9wPgoKCTxwPlRo YW5rcyB0byB3ZXQgZm9yIGEgbGFyZ2UgY2h1bmsgb2YgdGhlIGNvZGUuPC9wPgoKCTxoMiBp ZD0iY2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2gyPgoKCTx1bD4KCQk8bGk+MTYgSnVuIDA5IHwg MC4xIHwgSW5pdGlhbCByZWxlYXNlPC9saT4KCQk8bGk+MjMgSnVuIDA5IHwgMC4xMSB8IEZp eGVkIGNhbGxiYWNrIHBvaW50IHRvIHBsYXkgbmljZWx5IHdpdGggZ2JwX3Blcm1hbmVudF9s aW5rcyAodGhhbmtzIHBpZW1hbi9ncmFlbWUpPC9saT4KCQk8bGk+MTkgSnVsIDA5IHwgMC4y IHwgUmVxdWlyZXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC4yLjAgOyBjaGFu Z2VkIGNhbGxiYWNrIHRvIHR4cF9kaWUgYW5kIHN0YXR1cyBjb2RlIHRvIDMwMSAodGhhbmtz IHdldCk8L2xpPgoJCTxsaT4xNyBTZXAgMDkgfCAwLjIxIHwgS2x1ZGdlIHRvIGZvcmNlIDxz cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiByZWRpcmVjdCBpZiA8Y29kZT5oZWFkZXIo KTwvY29kZT4gZmFpbHMgZm9yIHdoYXRldmVyIHJlYXNvbiAodGhhbmtzIHRoZSBibHVlIGRy YWdvbik8L2xpPgoJPC91bD4KCjwvZGl2Pgo8IS0tICoqKiBCRUdJTiBQTFVHSU4gQ1NTICoq KiAtLT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6 MS41IDt9CiNzbWRfaGVscCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8x MzAlICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xv cjogI0ZGRkZDQzt9CiNzbWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFs OyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBk aXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQoj c21kX2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNl cmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBi b3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9y OiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgz IHsgY29sb3I6ICMyNzU2ODU7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsg bGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTog dXBwZXJjYXNlOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30KI3NtZF9oZWxwIGg0IHsg Zm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4 OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRf aGVscCAuYXRubSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMzM2Q7IH0KI3NtZF9oZWxw IC5tYW5kIHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNz bWRfaGVscCB0YWJsZSB7d2lkdGg6OTAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1i b3R0b206MWVtO30KI3NtZF9oZWxwIHRkLCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29s aWQgIzk5OTsgcGFkZGluZzouNWVtIDA7fQojc21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5 cGU6c3F1YXJlOyB9CiNzbWRfaGVscCAucmVxdWlyZWQge2NvbG9yOnJlZDt9CiNzbWRfaGVs cCBsaSB7IG1hcmdpbjo1cHggMjBweCA1cHggMzBweDsgfQojc21kX2hlbHAgLmJyZWFrIHsg bWFyZ2luLXRvcDo1cHg7IH0KPC9zdHlsZT4KPCEtLSAqKiogRU5EIFBMVUdJTiBDU1MgKioq IC0tPgoiO3M6NDoiY29kZSI7czoxMDQ0OiJyZWdpc3Rlcl9jYWxsYmFjaygnc21kX3Nob3J0 X3VybCcsICd0eHBfZGllJywgNDA0KTsNCg0KZnVuY3Rpb24gc21kX3Nob3J0X3VybCgkZXZl bnQsICRzdGVwKSB7DQoJJHVybHBhcnRzID0gcGFyc2VfdXJsKGh1KTsNCg0KCSRyZSA9ICcj XicuJHVybHBhcnRzWydwYXRoJ10uJyhbMC05XS4qKSMnOw0KDQoJJGhhdmVfaWQgPSBwcmVn X21hdGNoKCRyZSwgJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10sICRtKTsNCg0KCWlmICgkaGF2 ZV9pZCkgew0KCQkkaWQgPSAkbVsxXTsNCgkJJHBlcm1saW5rID0gcGVybWxpbmt1cmxfaWQo JGlkKTsNCg0KCQlpZiAoJHBlcm1saW5rKSB7DQoJCQlvYl9lbmRfY2xlYW4oKTsNCg0KCQkJ Ly8gU3R1cGlkLCBvdmVyIHRoZSB0b3AgaGVhZGVyIHNldHRpbmcgZm9yIElFDQoJCQloZWFk ZXIoIlN0YXR1czogMzAxIik7DQoJCQloZWFkZXIoIkhUVFAvMS4wIDMwMSBNb3ZlZCBQZXJt YW5lbnRseSIpOw0KCQkJaGVhZGVyKCJMb2NhdGlvbjogIi4kcGVybWxpbmssIFRSVUUsIDMw MSk7DQoNCgkJCS8vIEluIGNhc2UgdGhlIGhlYWRlcigpIG1ldGhvZCBmYWlscywgZmFsbCBi YWNrIG9uIGEgY2xhc3NpYyByZWRpcmVjdA0KCQkJZWNobyAnPGh0bWw+PGhlYWQ+PE1FVEEg SFRUUC1FUVVJVj0iUmVmcmVzaCIgQ09OVEVOVD0iMDtVUkw9Jy4kcGVybWxpbmsuJyI+PC9o ZWFkPjxib2R5PjwvYm9keT48L2h0bWw+JzsNCgkJCWRpZSgpOw0KCQl9DQoJfQ0KfQ0KDQpm dW5jdGlvbiBzbWRfY2Fub25pY2FsKCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHBy ZXRleHQ7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndHlwZScgPT4gJ2xpbmsnLA0K CSksICRhdHRzKSk7DQoNCglhc3NlcnRfYXJ0aWNsZSgpOw0KCSRsaW5rID0gaHUuJHByZXRl eHRbJ2lkJ107DQoNCgkkb3V0ID0gJyc7DQoJaWYgKCR0eXBlPT0ibGluayIpIHsNCgkJJG91 dCA9ICc8bGluayByZXY9ImNhbm9uaWNhbCIgaHJlZj0iJy4kbGluay4nIiAvPic7DQoJfSBl bHNlIHsNCgkJJG91dCA9ICRsaW5rOw0KCX0NCglyZXR1cm4gJG91dDsNCn0iO3M6NDoidHlw ZSI7czoxOiIwIjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czoz OiJtZDUiO3M6MzI6ImIwMzhkODM0MmIyNmNiYzk2YTZmNzE0YzkyM2EzMDgyIjt9