# fh-article-image-selector v0.3 # Article Image Selector with Preview # Florian Hoech # http://hoech.net/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MjU6ImZoLWFydGljbGUtaW1hZ2Utc2VsZWN0b3IiO3M6Nzoi dmVyc2lvbiI7czozOiIwLjMiO3M6NjoiYXV0aG9yIjtzOjEzOiJGbG9yaWFuIEhvZWNoIjtz OjEwOiJhdXRob3JfdXJpIjtzOjE3OiJodHRwOi8vaG9lY2gubmV0LyI7czoxMToiZGVzY3Jp cHRpb24iO3M6MzU6IkFydGljbGUgSW1hZ2UgU2VsZWN0b3Igd2l0aCBQcmV2aWV3IjtzOjQ6 InR5cGUiO2k6MTtzOjQ6ImhlbHAiO3M6MzQ5OiIKPGgxPkFydGljbGUgSW1hZ2UgU2VsZWN0 b3Igd2l0aCBQcmV2aWV3PC9oMT4KCjxwPkFkZHMgYW4gYXJ0aWNsZSBpbWFnZSBzZWxlY3Qg Ym94IHNob3dpbmcgYWxsIGF2YWlsYWJsZSBpbWFnZXMgdW5kZXIgdGhlICdXcml0ZSBBcnRp Y2xlJyB0YWIsCmluIGFkZGl0aW9uIHRvIHRoZSB0ZXh0IGZpZWxkIHdoaWNoIGNhbiBzdGls bCBiZSB1c2VkLjxiciAvPgpJdCB1c2VzIGltYWdlIElEcywgc28gaXQgd29uJ3QgYnJlYWsg dGh1bWJuYWlscy48L3A+Cgo8aDI+Q3JlZGl0czwvaDI+Cgo8cD5UaGlzIHBsdWdpbiBpcyBi YXNlZCBvbiBqcHNfaW1nX3NlbGVjdG9yIHYwLjIgYnkgSm9ubmllIFNwcmF0bGV5LjwvcD4K IjtzOjQ6ImNvZGUiO3M6NTkxMzoiCmlmICggQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nICkK ewoJJGZoSW1hZ2VFdmVudCA9ICdmaF9hcnRpY2xlX2ltYWdlX3NlbGVjdG9yJzsKCWFkZF9w cml2cyAoICRmaEltYWdlRXZlbnQsICcxJyApOwoJcmVnaXN0ZXJfY2FsbGJhY2sgKCAkZmhJ bWFnZUV2ZW50LCAiYXJ0aWNsZSIgKTsKfQoKZnVuY3Rpb24gZmhfYXJ0aWNsZV9pbWFnZV9z ZWxlY3RvciggJGV2ZW50LCAkc3RlcCApCnsKCS8qID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CgkgKiAgR2V0IHRoZSBzZXR0aW5ncyBhbmQg VVJMIGZvciB0aGUgaW1hZ2UKCSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ICovCgoJZ2xvYmFsICRwcmVmczsKCgkkaW1hZ2VEaXIgPSAn aHR0cDovLycgLiAkcHJlZnMgWyAnc2l0ZXVybCcgXSAuICcvJyAuICRwcmVmcyBbICdpbWdf ZGlyJyBdIC4gJy8nOwoKCS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CgkgKiAgQnVpbGQgdGhlIHF1ZXJ5ICYgZXhlY3V0ZSBpdAoJICog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8K Cgkkcm93cyA9IHNhZmVfcm93c19zdGFydCAoICcqJywgJ3R4cF9pbWFnZScsICcxPTEnICk7 CgoJJGltYWdlQXJyYXkgPSBhcnJheSAoKTsKCgkvL0lmIGl0IGhhcHBlbmVkCglpZiAoICRy b3dzICkKCXsKCQkvL2xvb3AgaXQKCQl3aGlsZSAoICRyb3cgPSBuZXh0Um93ICggJHJvd3Mg KSApCgkJewoJCQkkaW1hZ2VBcnJheSBbXSA9ICRyb3c7CgkJfQoJfQoJZWxzZSByZXR1cm4g ZmFsc2U7CgoJLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KCSAqICBHZXQgZXhpc3RpbmcgYXJ0aWNsZSBpbWFnZQoJICogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCgkkY29uY3Vy cmVudCA9IEZBTFNFOwoKCWV4dHJhY3QoJHByZWZzKTsKCglleHRyYWN0KGdwc2EoYXJyYXko J3ZpZXcnLCdmcm9tX3ZpZXcnLCdzdGVwJykpKTsKCglpZighZW1wdHkoJEdMT0JBTFNbJ0lE J10pKSB7IC8vIG5ld2x5LXNhdmVkIGFydGljbGUKCQkkSUQgPSAkR0xPQkFMU1snSUQnXTsK CQkkc3RlcCA9ICdlZGl0JzsKCX0gZWxzZSB7CgkJJElEID0gZ3BzKCdJRCcpOwoJfQoKCS8v IHN3aXRjaCB0byAndGV4dCcgdmlldyB1cG9uIHBhZ2UgbG9hZCBhbmQgYWZ0ZXIgYXJ0aWNs ZSBwb3N0CglpZighJHZpZXcgfHwgZ3BzKCdzYXZlJykgfHwgZ3BzKCdwdWJsaXNoJykpIHsK CQkkdmlldyA9ICd0ZXh0JzsKCX0KCglpZiAoJHN0ZXAgPT0gImVkaXQiCgkJJiYgJHZpZXc9 PSJ0ZXh0IgoJCSYmICFlbXB0eSgkSUQpCgkJJiYgJGZyb21fdmlldyAhPSAncHJldmlldycK CQkmJiAkZnJvbV92aWV3ICE9ICdodG1sJwoJCSYmICEkY29uY3VycmVudCkKCXsKCQkvLy0t IGl0J3MgYW4gZXhpc3RpbmcgYXJ0aWNsZSAtIG9mZiB3ZSBnbyB0byB0aGUgZGIKCQkkSUQg PSBhc3NlcnRfaW50KCRJRCk7CgoJCSRycyA9IHNhZmVfcm93KAoJCQkiKiwgdW5peF90aW1l c3RhbXAoUG9zdGVkKSBhcyBzUG9zdGVkLAoJCQl1bml4X3RpbWVzdGFtcChFeHBpcmVzKSBh cyBzRXhwaXJlcywKCQkJdW5peF90aW1lc3RhbXAoTGFzdE1vZCkgYXMgc0xhc3RNb2QiLAoJ CQkidGV4dHBhdHRlcm4iLAoJCQkiSUQ9JElEIgoJCSk7CgoJCWV4dHJhY3QoJHJzKTsKCX0K CWVsc2UgJEltYWdlID0gTlVMTDsKCgkvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQoJICogIExvb3AgdGhlIHF1ZXJ5LCBhZGRpbmcgYSBv cHRpb24gdG8gdGhlIGxpc3QKCSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ICovCgoJJGltYWdlU2VsZWN0T3B0aW9ucyA9ICcnOwoKCWZv cmVhY2ggKCAkaW1hZ2VBcnJheSBhcyAkaW1hZ2UgKQoJewoJCWlmIChpbnR2YWwoJEltYWdl KSA9PSAkSW1hZ2UpIHsgLy8gY3VycmVudCBhcnRpY2xlIGltYWdlIGlzIGFuIGltYWdlIElE CgkJCSRtYXRjaCA9ICgkSW1hZ2UgPT0gJGltYWdlWyJpZCJdKTsKCQl9CgkJZWxzZSB7IC8v IGN1cnJlbnQgYXJ0aWNsZSBpbWFnZSBpcyBhIGZ1bGwgcXVhbGlmaWVkIFVSTAoJCQkkbWF0 Y2ggPSAoKCRJbWFnZSA9PSAkaW1hZ2VEaXIgLiAkaW1hZ2VbImlkIl0gLiAidCIgLiAkaW1h Z2VbImV4dCJdKSB8fAoJCQkJCQkoJEltYWdlID09ICRpbWFnZURpciAuICRpbWFnZVsiaWQi XSAuICRpbWFnZVsiZXh0Il0pKTsKCQl9CgkJJGltYWdlU2VsZWN0T3B0aW9ucyAuPSAnPG9w dGlvbiB2YWx1ZT0iJyAuICRpbWFnZVsiaWQiXSAuICcsJyAuICRpbWFnZVsiZXh0Il0gLiAn LCcgLiAkaW1hZ2VbInRodW1ibmFpbCJdIC4gJywnIC4gJGltYWdlWyJ3Il0gLiAnLCcgLiAk aW1hZ2VbImgiXSAuICciICcgLiAoJG1hdGNoID8gJ3NlbGVjdGVkPSJzZWxlY3RlZCInIDog JycpIC4gJz4nIC4gJGltYWdlWyJuYW1lIl0gLiAnPC9vcHRpb24+JzsKCX0KCgkvKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoJICogIEZp bmlzaCB1cCB0aGUgc2VsZWN0IGxpc3QKCSAqID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ICovCgoJJGltYWdlU2VsZWN0VG9wID0gJzxzZWxl Y3QgY2xhc3M9InNlbGVjdCIgaWQ9ImZoLWFydGljbGUtaW1hZ2Utc2VsZWN0IiBvbmNoYW5n ZT0iZmhfYXJ0aWNsZV9pbWFnZV9zZWxlY3QodHJ1ZSkiIHN0eWxlPSJtYXJnaW46IDVweCAw IDA7Ij48b3B0aW9uIHZhbHVlPSIiPjwvb3B0aW9uPic7CgkkaW1hZ2VTZWxlY3RCb3R0b20g PSAnPC9zZWxlY3Q+PGJyIC8+PGltZyBpZD0iZmgtYXJ0aWNsZS1pbWFnZS1wcmV2aWV3IiBh bHQ9IkFydGljbGUgSW1hZ2UgUHJldmlldyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG1hcmdp bjogNXB4IDAgMDsiIC8+PGJyIC8+JzsKCSRpbWFnZVNlbGVjdEJveCA9ICRpbWFnZVNlbGVj dFRvcCAuICRpbWFnZVNlbGVjdE9wdGlvbnMgLiAkaW1hZ2VTZWxlY3RCb3R0b207CgoJLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCSAq ICBPdXRwdXQgdGhlIGphdmFzY3JpcHQgZm9yIHRoZSBwYWdlCgkgKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKCWVjaG8gJwo8c2Ny aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCgpmdW5jdGlvbiBmaF9h cnRpY2xlX2ltYWdlX3NlbGVjdChmYWRlKSB7CgkvLyBTaG93IHByZXZpZXcgYW5kIHNldCBh cnRpY2xlIGltYWdlIHRleHQgZmllbGQgdG8gaW1hZ2UgSUQgb2Ygc2VsZWN0ZWQgaW1hZ2UK Cgl2YXIgaW1nSW5mbyA9ICQoIiNmaC1hcnRpY2xlLWltYWdlLXNlbGVjdCA6c2VsZWN0ZWQi KS52YWwoKS5zcGxpdCgiLCIpLAoJCWltZ0lkID0gaW1nSW5mb1swXTsKCglpZiAoaW1nSW5m by5sZW5ndGggPT0gNSkgewoJCXZhciBpbWdFeHQgPSBpbWdJbmZvWzFdLAoJCQlpbWdUaHVt YiA9IGltZ0luZm9bMl0sCgkJCWltZ1cgPSBpbWdJbmZvWzNdLAoJCQlpbWdIID0gaW1nSW5m b1s0XSwKCQkJaW1nU3JjID0gIicgLiAkaW1hZ2VEaXIgLiAnIiArIGltZ0lkICsgKGltZ1Ro dW1iID8gInQiIDogIiIpICsgaW1nRXh0OwoKCQlpZiAoaW1nVGh1bWIpIHsKCQkJLy8gdXNl IHRodW1ibmFpbCBmb3IgcHJldmlldwoJCQlpZiAoZmFkZSkKCQkJCSQoIiNmaC1hcnRpY2xl LWltYWdlLXByZXZpZXciKS5mYWRlT3V0KCJmYXN0IiwgZnVuY3Rpb24gKCkgewoJCQkJCSQo IiNmaC1hcnRpY2xlLWltYWdlLXByZXZpZXciKS53aWR0aCgiYXV0byIpLmhlaWdodCgiYXV0 byIpLmF0dHIoInNyYyIsIGltZ1NyYyk7CgkJCQl9KS5mYWRlSW4oImZhc3QiKTsKCQkJZWxz ZQoJCQkJJCgiI2ZoLWFydGljbGUtaW1hZ2UtcHJldmlldyIpLndpZHRoKCJhdXRvIikuaGVp Z2h0KCJhdXRvIikuYXR0cigic3JjIiwgaW1nU3JjKS5zaG93KCk7CgkJfQoJCWVsc2UgewoJ CQkvLyB1c2Ugc2NhbGVkLWRvd24gaW1hZ2UgZm9yIHByZXZpZXcKCQkJdmFyIHNjYWxlRmFj dG9yID0gMTUwIC8gTWF0aC5tYXgoaW1nVywgaW1nSCk7IC8vIGxpbWl0IHNpemUgdG8gMTUw eDE1MCBweAoJCQlpZiAoZmFkZSkKCQkJCSQoIiNmaC1hcnRpY2xlLWltYWdlLXByZXZpZXci KS5mYWRlT3V0KCJmYXN0IiwgZnVuY3Rpb24gKCkgewoJCQkJCSQoIiNmaC1hcnRpY2xlLWlt YWdlLXByZXZpZXciKS53aWR0aChzY2FsZUZhY3RvciAqIGltZ1cpLmhlaWdodChzY2FsZUZh Y3RvciAqIGltZ0gpLmF0dHIoInNyYyIsIGltZ1NyYyk7CgkJCQl9KS5mYWRlSW4oImZhc3Qi KTsKCQkJZWxzZQoJCQkJJCgiI2ZoLWFydGljbGUtaW1hZ2UtcHJldmlldyIpLndpZHRoKHNj YWxlRmFjdG9yICogaW1nVykuaGVpZ2h0KHNjYWxlRmFjdG9yICogaW1nSCkuYXR0cigic3Jj IiwgaW1nU3JjKS5zaG93KCk7CgkJfQoJfQoJZWxzZSBpZiAoZmFkZSkKCQkkKCIjZmgtYXJ0 aWNsZS1pbWFnZS1wcmV2aWV3IikuZmFkZU91dCgiZmFzdCIpOwoJZWxzZQoJCSQoIiNmaC1h cnRpY2xlLWltYWdlLXByZXZpZXciKS5oaWRlKCk7CgoJJCgiI2FydGljbGUtaW1hZ2UiKS52 YWwoaW1nSWQpOwp9OwoKZnVuY3Rpb24gZmhfYXJ0aWNsZV9pbWFnZV9maW5kKCkgewoJLy8g RmluZCBjdXJyZW50IGFydGljbGUgaW1hZ2UgYW5kIHNlbGVjdCBpdAoKCXZhciBpZF9vcl91 cmwgPSAkKCIjYXJ0aWNsZS1pbWFnZSIpLnZhbCgpLAoJCWluZGV4ID0gbnVsbDsKCglpZiAo aWRfb3JfdXJsKSB7CgkJdmFyIG9wdGlvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi ZmgtYXJ0aWNsZS1pbWFnZS1zZWxlY3QiKS5vcHRpb25zOwoJCWZvciAodmFyIGkgPSAwOyBp IDwgb3B0aW9ucy5sZW5ndGg7IGkgKysgKSB7CgkJCXZhciBpbWdJbmZvID0gb3B0aW9uc1tp XS52YWx1ZS5zcGxpdCgiLCIpLAoJCQkJaW1nSWQgPSBpbWdJbmZvWzBdOwoJCQlpZiAoaW1n SW5mby5sZW5ndGggPT0gNSkgewoJCQkJdmFyIGltZ0V4dCA9IGltZ0luZm9bMV0sCgkJCQkJ aW1nVGh1bWIgPSBpbWdJbmZvWzJdOwoJCQkJaWYgKChwYXJzZUludChpZF9vcl91cmwpID09 IGlkX29yX3VybCAmJiBpZF9vcl91cmwgPT0gaW1nSWQpIHx8CgkJCQkJaWRfb3JfdXJsID09 ICInIC4gJGltYWdlRGlyIC4gJyIgKyBpbWdJZCArICJ0IiArIGltZ0V4dCB8fAoJCQkJCWlk X29yX3VybCA9PSAiJyAuICRpbWFnZURpciAuICciICsgaW1nSWQgKyBpbWdFeHQpIHsKCQkJ CQlpbmRleCA9IGk7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQl9Cgl9CgllbHNlIGluZGV4 ID0gMDsKCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmgtYXJ0aWNsZS1pbWFnZS1zZWxl Y3QiKS5zZWxlY3RlZEluZGV4ID0gaW5kZXg7CgoJaWYgKGluZGV4ICE9IG51bGwpCgkJZmhf YXJ0aWNsZV9pbWFnZV9zZWxlY3QodHJ1ZSk7CgllbHNlCgkJJCgiI2ZoLWFydGljbGUtaW1h Z2UtcHJldmlldyIpLmZhZGVPdXQoImZhc3QiKTsKfTsKCiQoIiNhcnRpY2xlLWltYWdlIiku YmVmb3JlKFwnJyAuICRpbWFnZVNlbGVjdEJveCAuICdcJyk7CiQoIiNhcnRpY2xlLWltYWdl IikucmVwbGFjZVdpdGgoXCc8aW5wdXQgdmFsdWU9IlwnICsgJCgiI2FydGljbGUtaW1hZ2Ui KS52YWwoKSArIFwnIiBuYW1lPSJJbWFnZSIgc2l6ZT0iMjIiIGNsYXNzPSJlZGl0IiBpZD0i YXJ0aWNsZS1pbWFnZSIgdHlwZT0idGV4dCIgb25jaGFuZ2U9ImZoX2FydGljbGVfaW1hZ2Vf ZmluZCgpIiAvPlwnKTsKCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJZmhfYXJ0 aWNsZV9pbWFnZV9zZWxlY3QoKTsKfSk7CgovL11dPgo8L3NjcmlwdD4KJzsKCn0KIjtzOjM6 Im1kNSI7czozMjoiMmE4ZTkxOTg5Njk1Nzg2OWMyZDQ0MDhhNzc2YmI4OTEiO30=