# stm_image_uploader 0.3 # Inline image uploading within "write" tab. # Stanislav Müller # http://laborblog.3st.de # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTg6InN0bV9pbWFnZV91cGxvYWRlciI7czo2OiJhdXRob3IiO3M6MTc6IlN0YW5pc2xhdiBNw7xsbGVyIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIzOiJodHRwOi8vbGFib3JibG9nLjNzdC5kZSI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuMyI7czoxMToiZGVzY3JpcHRpb24iO3M6NDI6IklubGluZSBpbWFnZSB1cGxvYWRpbmcgd2l0aGluICJ3cml0ZSIgdGFiLiI7czo0OiJoZWxwIjtzOjU2NzoiPHA+VGhpcyBhZG1pbiBleHRlbnNpb24gZmluYWxseSBwbGFjZXMgYSBkZWFkLXNpbXBsZSBpbWFnZSB1cGxvYWQgaW50ZXJmYWNlIHdoZXJlIHlvdSByZWFsbHkgbmVlZCBpdDogd2l0aGluIHRoZSAid3JpdGUiIHRhYi4gSG93IG9mdGVuIGRpZCB5b3Ugd3JpdGUgYW4gYXJ0aWNsZSBhbmQganVzdCB3YW50ZWQgdG8gcXVpY2tseSB1cGxvYWQgYW4gYXBwcm9waWF0ZSBpbWFnZSB3aXRob3V0IGFsbCB0aGUgaGFzc2xlIHdpdGggc2F2aW5nIHlvdXIgd3JpdGluZ3MgYW5kIGNoYW5naW5nIHRvIHRoZSBpbWFnZSBzZWN0aW9uPyBIZXJlIHlvdSBhcmU6IElubGluZSB1cGxvYWRpbmcsIGlubGluZSBpbnNlcnRpbmcsIGFuZCB5b3UncmUgZG9uZSE8L3A+DQoNCjxwPkhvdyB0byB1c2U6PC9wPg0KDQo8b2w+DQo8bGk+QWN0aXZhdGUgdGhlIHBsdWdpbiE8L2xpPg0KPGxpPkdvIHRvICJ3cml0ZSIgdGFiITwvbGk+DQo8bGk+VXNlIHRoZSB1cGxvYWRlciBpbiB0aGUgbG93ZXIgbGVmdCBjb3JuZXIhPC9saT4NCjwvdWw+DQoNCjxwPkphdmFTY3JpcHQgaXMgbmVlZGVkIGZvciB0aGlzIHBsdWdpbi48L3A+IjtzOjQ6ImNvZGUiO3M6NjM2NDoiaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykgewkNCglyZWdpc3Rlcl9jYWxsYmFjaygiaGFuZGxlX3BpY3R1cmVfdXBsb2FkX2Zvcm0iLCAicGljdHVyZV91cGxvYWRfZm9ybSIpOw0KICByZWdpc3Rlcl9jYWxsYmFjaygic2V0dXBfcGljdHVyZV91cGxvYWQiLCAiYXJ0aWNsZSIpOw0KfQ0KDQpmdW5jdGlvbiBzZXR1cF9waWN0dXJlX3VwbG9hZCgkZXZlbnQsICRzdGVwKSB7DQplY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPnZhciBwYXJlbnRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFydGljbGUtbWFpbiIpOw0KDQp2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsNCnZhciBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7DQpsYWJlbC5pbm5lckhUTUwgPSAiUGljdHVyZXMgdXBsb2FkIjsNCnAuYXBwZW5kQ2hpbGQobGFiZWwpOw0KcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChwKTsNCg0KICAgDQp2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7DQppZnJhbWUuaWQ9InBpY3R1cmVzIjsNCmlmcmFtZS5ib3JkZXIgPSAibm9uZSI7DQppZnJhbWUuc3JjID0gImh0dHA6Ly8nLiRHTE9CQUxTWydwcmVmcyddWydzaXRldXJsJ10uJy90ZXh0cGF0dGVybi9pbmRleC5waHA/ZXZlbnQ9cGljdHVyZV91cGxvYWRfZm9ybSI7DQppZnJhbWUuc3R5bGUud2lkdGggPSAiMTAwJSI7DQppZnJhbWUuc3R5bGUuaGVpZ2h0ID0gIjE2NXB4IjsNCmlmcmFtZS5zdHlsZS5ib3JkZXIgPSAibm9uZSI7DQpwLmFwcGVuZENoaWxkKGlmcmFtZSk7PC9zY3JpcHQ+JzsNCn0NCgkNCi8vLyBJbmxpbmUgUGljdHVyZSBVcGxvYWQNCg0KDQpmdW5jdGlvbiBoYW5kbGVfcGljdHVyZV91cGxvYWRfZm9ybSgkYXR0cil7DQoJb2Jfc3RhcnQoKTsNCglvYl9lbmRfY2xlYW4oKTsNCiAgICAgICAgDQplY2hvICgnPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjEvL0VOIg0KCSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDExL0RURC94aHRtbDExLmR0ZCI+DQo8aHRtbD4NCgk8aGVhZD4NCgkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KCQk8dGl0bGU+UGljdHVyZSBVcGxvYWQ8L3RpdGxlPg0KCQk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InRleHRwYXR0ZXJuLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIHRpdGxlPSJubyB0aXRsZSIgY2hhcnNldD0idXRmLTgiPg0KCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPg0KCQkJZm9ybS51cGxvYWQtZm9ybSB7DQoJCQkJdGV4dC1hbGlnbjpsZWZ0Ow0KCQkJCW92ZXJmbG93OmhpZGRlbjsNCgkJCQl3aWR0aDo0MDBweDsNCgkJCX0NCgkJCWZvcm0udXBsb2FkLWZvcm0gLmZpbGUgew0KCQkJCW1hcmdpbi1yaWdodDogMjBweDsNCgkJCQljdXJzb3I6cG9pbnRlcjsNCgkJCX0NCgkJCWlucHV0LmZpbGUgew0KCQkJCW1hcmdpbi10b3A6MDsNCgkJCQljdXJzb3I6ZGVmYXVsdDsNCgkJCX0NCgkJCWxhYmVsIHsNCgkJCQljbGVhcjpib3RoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OmJsb2NrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDoyMDBweDsNCgkJCX0NCgkJCWlucHV0LmFsdCB7DQoJCQkJY2xlYXI6IGJvdGg7DQoJCQl9DQoJCQlpbnB1dC5zbWFsbGVyYm94IHsNCmRpc3BsYXk6IGJsb2NrOw0KCQkJCWNsZWFyOmJvdGg7DQoJCQkJbWFyZ2luLXRvcDogMTBweDsNCgkJCX0NCgkJCS5lcnJvciB7DQoJCQkJY29sb3I6ICNmZmY7DQoJCQkJcGFkZGluZzogNXB4Ow0KCQkJCWZvbnQtc2l6ZToxMXB4Ow0KCQkJCWJhY2tncm91bmQ6IzkwMDsNCgkJCQl3aWR0aDozODBweDsNCgkJCQljbGVhcjogYm90aDsNCgkJCQltYXJnaW4tdG9wOiAxMHB4Ow0KCQkJfQ0KCQkJaW5wdXQucmVzdWx0IHsNCgkJCQlib3JkZXI6IDJweCBzb2xpZCAjMTFhYTFiOw0KCQkJCW1hcmdpbi10b3A6IDIwcHg7DQoJCQl9DQoJCQlsYWJlbA0KCQk8L3N0eWxlPg0KCTwvaGVhZD48Ym9keT4nKTsgICAgICAgIA0KDQoJZ2xvYmFsICRmaWxlX21heF91cGxvYWRfc2l6ZTsNCglpZiAoISRmaWxlX21heF91cGxvYWRfc2l6ZSB8fCBpbnR2YWwoJGZpbGVfbWF4X3VwbG9hZF9zaXplKT09MCkgJGZpbGVfbWF4X3VwbG9hZF9zaXplID0gMiooMTAyNCoxMDI0KTsNCgkkbWF4X2ZpbGVfc2l6ZSA9IChpbnR2YWwoJGZpbGVfbWF4X3VwbG9hZF9zaXplKSA9PSAwKSA/ICcnOiBpbnR2YWwoJGZpbGVfbWF4X3VwbG9hZF9zaXplKTsNCgllY2hvIHVwbG9hZF9mb3JtX2Zvcl9wYWdlKCJwaWN0dXJlIiwgImZpbGVfaW5zZXJ0IiwgInBpY3R1cmVfdXBsb2FkX2Zvcm0iLCAiIiwgJG1heF9maWxlX3NpemUpOw0KDQoJaWYoaXNzZXQoJF9GSUxFU1sndGhlZmlsZSddKSl7DQoJCWdsb2JhbCAkdHhwY2ZnLCAkZXh0ZW5zaW9ucywgJHR4cF91c2VyOw0KDQoJCWV4dHJhY3QoJHR4cGNmZyk7DQoNCgkJJG1ldGEgPSBkb1NsYXNoKGdwc2EoYXJyYXkoJ2NhcHRpb24nLCAnYWx0JywgJ2NhdGVnb3J5JykpKTsNCg0KCQkkaW1nX3Jlc3VsdCA9IGltYWdlX2RhdGEyKCRfRklMRVNbJ3RoZWZpbGUnXSwgJG1ldGEpOw0KCQkNCgkJDQoJCWlmKGlzX2FycmF5KCRpbWdfcmVzdWx0KSAmJiBpc3NldCgkaW1nX3Jlc3VsdFsxXSkpIHsNCgkJCWVjaG8gIjxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz1cImVkaXQgcmVzdWx0XCIgdmFsdWU9Jzx0eHA6aW1hZ2UgaWQ9XCIkaW1nX3Jlc3VsdFsxXVwiIC8+JyI7DQoJCX1lbHNlew0KCQkJZWNobyAiPGRpdiBjbGFzcz0nZXJyb3InPjxwPiIuJGltZ19yZXN1bHQuIjwvcD48L2Rpdj4iOw0KCQl9DQoJfQ0KZWNobygiPC9ib2R5PjwvaHRtbD4iKTsNCglleGl0Ow0KfQ0KDQpmdW5jdGlvbiBpbWFnZV9kYXRhMigkZmlsZSAsICRtZXRhID0gJycsICRpZCA9ICcnLCAkdXBsb2FkZWQgPSB0cnVlKSB7DQoJZ2xvYmFsICR0eHBjZmcsICRleHRlbnNpb25zLCAkdHhwX3VzZXIsICRwcmVmcywgJGZpbGVfbWF4X3VwbG9hZF9zaXplOw0KDQoJZXh0cmFjdCgkdHhwY2ZnKTsNCg0KCSRuYW1lID0gJGZpbGVbJ25hbWUnXTsNCgkkZXJyb3IgPSAkZmlsZVsnZXJyb3InXTsNCgkkZmlsZSA9ICRmaWxlWyd0bXBfbmFtZSddOw0KDQoJaWYgKCR1cGxvYWRlZCl7DQoJCSRmaWxlID0gZ2V0X3VwbG9hZGVkX2ZpbGUoJGZpbGUpOw0KDQoJCWlmICgkZmlsZV9tYXhfdXBsb2FkX3NpemUgPCBmaWxlc2l6ZSgkZmlsZSkpew0KCQkJdW5saW5rKCRmaWxlKTsNCg0KCQkJcmV0dXJuIHVwbG9hZF9nZXRfZXJyb3Jtc2coVVBMT0FEX0VSUl9GT1JNX1NJWkUpOw0KCQl9DQoJfQ0KCQ0KCWxpc3QoJHcsICRoLCAkZXh0ZW5zaW9uKSA9IGdldGltYWdlc2l6ZSgkZmlsZSk7DQoJDQoJZ2xvYmFsICRleHRlbnNpb25zOw0KCSRleHRlbnNpb25zID0gYXJyYXkoMCwnLmdpZicsJy5qcGcnLCcucG5nJywnLnN3ZicpOw0KCWRlZmluZSgiSU1QQVRIIiwkcHJlZnNbJ3BhdGhfdG9fc2l0ZSddLicvJy4kcHJlZnNbJ2ltZ19kaXInXS4nLycpOw0KCWluY2x1ZGUgdHhwYXRoLicvbGliL2NsYXNzLnRodW1iLnBocCc7DQoJDQoJCQ0KCWlmICgoJGZpbGUgIT09IGZhbHNlKSAmJiBAJGV4dGVuc2lvbnNbJGV4dGVuc2lvbl0pew0KCQkkZXh0ID0gJGV4dGVuc2lvbnNbJGV4dGVuc2lvbl07DQoNCgkJJG5hbWUgPSBkb1NsYXNoKHN1YnN0cigkbmFtZSwgMCwgc3RycnBvcygkbmFtZSwgJy4nKSkuJGV4dCk7DQoJCQ0KCQkNCgkJaWYgKCRtZXRhID09IGZhbHNlKXsNCgkJCSRtZXRhID0gYXJyYXkoJ2NhdGVnb3J5JyA9PiAnJywgJ2NhcHRpb24nID0+ICcnLCAnYWx0JyA9PiAnJyk7DQoJCX0NCg0KCQlleHRyYWN0KCRtZXRhKTsNCg0KCQkkcSA9Im5hbWUgPSAnJG5hbWUnLCBleHQgPSAnJGV4dCcsIHcgPSAkdywgaCA9ICRoLCBhbHQgPSAnJGFsdCcsIGNhcHRpb24gPSAnJGNhcHRpb24nLCBjYXRlZ29yeSA9ICckY2F0ZWdvcnknLCBkYXRlID0gbm93KCksIGF1dGhvciA9ICckdHhwX3VzZXInIjsNCg0KCQlpZiAoZW1wdHkoJGlkKSl7DQoJCQkkcnMgPSBzYWZlX2luc2VydCgndHhwX2ltYWdlJywgJHEpOw0KCQkJJGlkID0gJEdMT0JBTFNbJ0lEJ10gPSBteXNxbF9pbnNlcnRfaWQoKTsNCgkJfQllbHNlIHsNCgkJCSRpZCA9IGFzc2VydF9pbnQoJGlkKTsNCgkJCSRycyA9IHNhZmVfdXBkYXRlKCd0eHBfaW1hZ2UnLCAkcSwgImlkID0gJGlkIik7DQoJCX0NCg0KCQlpZighJHJzKXsNCgkJCXJldHVybiBnVHh0KCdpbWFnZV9zYXZlX2Vycm9yJyk7DQoJCX1lbHNlew0KCQkJJG5ld3BhdGggPSBJTVBBVEguJGlkLiRleHQ7DQoNCgkJCWlmIChzaGlmdF91cGxvYWRlZF9maWxlKCRmaWxlLCAkbmV3cGF0aCkgPT0gZmFsc2Upew0KCQkJCSRpZCA9IGFzc2VydF9pbnQoJGlkKTsNCg0KCQkJCXNhZmVfZGVsZXRlKCd0eHBfaW1hZ2UnLCAiaWQgPSAkaWQiKTsNCgkJCQlzYWZlX2FsdGVyKCd0eHBfaW1hZ2UnLCAiYXV0b19pbmNyZW1lbnQgPSAkaWQiKTsNCg0KCQkJCWlmIChpc3NldCgkR0xPQkFMU1snSUQnXSkpew0KCQkJCQl1bnNldCggJEdMT0JBTFNbJ0lEJ10pOw0KCQkJCX0NCg0KCQkJCXJldHVybiAkbmV3cGF0aC5zcC5nVHh0KCd1cGxvYWRfZGlyX3Blcm1zJyk7DQoJCQl9ZWxzZXsNCgkJCQlAY2htb2QoJG5ld3BhdGgsIDA2NDQpOw0KDQoJCQkJLy8gQXV0by1nZW5lcmF0ZSBhIHRodW1ibmFpbCB1c2luZyB0aGUgbGFzdCBzZXR0aW5ncw0KCQkJCWlmIChpc3NldCgkcHJlZnNbJ3RodW1iX3cnXSwgJHByZWZzWyd0aHVtYl9oJ10sICRwcmVmc1sndGh1bWJfY3JvcCddKSl7DQoJCQkJCSR0ID0gbmV3IHR4cF90aHVtYiggJGlkICk7DQoNCgkJCQkJJHQtPmNyb3AgPSAoJHByZWZzWyd0aHVtYl9jcm9wJ10gPT0gJzEnKTsNCgkJCQkJJHQtPmhpbnQgPSAnMCc7DQoNCgkJCQkJaWYgKGlzX251bWVyaWMoJHByZWZzWyd0aHVtYl93J10pKSAkdC0+d2lkdGggPSAkcHJlZnNbJ3RodW1iX3cnXTsNCgkJCQkJaWYgKGlzX251bWVyaWMoJHByZWZzWyd0aHVtYl9oJ10pKSAkdC0+aGVpZ2h0ID0gJHByZWZzWyd0aHVtYl9oJ107DQoNCgkJCQkJJHQtPndyaXRlKCk7DQoJCQkJfQ0KDQoJCQkJJG1lc3NhZ2UgPSBnVHh0KCdpbWFnZV91cGxvYWRlZCcsIGFycmF5KCd7bmFtZX0nID0+ICRuYW1lKSk7DQoJCQkJcmV0dXJuIGFycmF5KCRtZXNzYWdlLCAkaWQpOw0KCQkJfQ0KCQl9DQoJfWVsc2V7DQoJCWlmICgkZmlsZSA9PT0gZmFsc2Upew0KCQkJcmV0dXJuIHVwbG9hZF9nZXRfZXJyb3Jtc2coJGVycm9yKTsNCgkJfWVsc2V7DQoJCQlyZXR1cm4gZ1R4dCgnb25seV9ncmFwaGljX2ZpbGVzX2FsbG93ZWQnKTsNCgkJfQ0KCX0NCn0NCg0KZnVuY3Rpb24gdXBsb2FkX2Zvcm1fZm9yX3BhZ2UoJHBvcGhlbHAsICRzdGVwLCAkZXZlbnQsICRpZCA9ICcnLCAkbWF4X2ZpbGVfc2l6ZSA9ICcxMDAwMDAwJywgJGxhYmVsX2lkID0gJycsICRjbGFzcyA9ICd1cGxvYWQtZm9ybScpew0KCWdsb2JhbCAkc29ydCwgJGRpciwgJHBhZ2UsICRzZWFyY2hfbWV0aG9kLCAkY3JpdDsNCg0KCSRjbGFzcyA9ICgkY2xhc3MpID8gJyBjbGFzcz0iJy4kY2xhc3MuJyInIDogJyc7DQoNCgkkbGFiZWxfaWQgPSAoJGxhYmVsX2lkKSA/ICRsYWJlbF9pZCA6ICRldmVudC4nLXVwbG9hZCc7DQoNCglyZXR1cm4gbi5uLic8Zm9ybScuJGNsYXNzLicgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249ImluZGV4LnBocCI+Jy4NCgkJbi4nPGRpdj4nLg0KDQoJCSghZW1wdHkoJG1heF9maWxlX3NpemUpPyBuLmhJbnB1dCgnTUFYX0ZJTEVfU0laRScsICRtYXhfZmlsZV9zaXplKTogJycpLg0KCQkNCgkJbi5lSW5wdXQoJGV2ZW50KS4NCgkJbi5zSW5wdXQoJHN0ZXApLg0KCQluLmhJbnB1dCgnaWQnLCAkaWQpLg0KDQoJCW4uaElucHV0KCdzb3J0JywgJHNvcnQpLg0KCQluLmhJbnB1dCgnZGlyJywgJGRpcikuDQoJCW4uaElucHV0KCdwYWdlJywgJHBhZ2UpLg0KCQluLmhJbnB1dCgnY3JpdCcsICRjcml0KS4NCgkJDQoJCSc8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImZpbGUiIG5hbWU9InRoZWZpbGUiIHZhbHVlPSIiIGNsYXNzPSJlZGl0IGZpbGUiIC8+Jy4NCgkJJzxsYWJlbCBmb3I9ImFsdCI+QWx0PC9sYWJlbD4nLg0KCQknPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImFsdCIgdmFsdWU9IiIgY2xhc3M9ImFsdCBlZGl0IiBpZD0iYWx0IiAvPicuDQoJCWZJbnB1dCgnc3VibWl0JywgJycsIGdUeHQoJ3VwbG9hZCcpLCAnc21hbGxlcmJveCcpLg0KDQoJCW4uJzwvZGl2PicuDQoJCW4uJzwvZm9ybT4nOw0KfSI7czo0OiJ0eXBlIjtzOjE6IjEiO3M6MzoibWQ1IjtzOjMyOiJhYTYzODgzYWY1NTMxYTgyOTEzZTM4NzEzNWQ0NWEzNiI7fQ==