You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.9 KiB

8 years ago
  1. <?php
  2. use Movim\Widget\Base;
  3. use Moxl\Xec\Action\Upload\Request;
  4. class Upload extends Base
  5. {
  6. public function load()
  7. {
  8. $this->addjs('upload.js');
  9. $this->addcss('upload.css');
  10. $this->registerEvent('upload_request_handle', 'onRequested');
  11. $this->registerEvent('upload_request_error', 'onError');
  12. $this->registerEvent('upload_request_errornotallowed', 'onErrorNotAllowed');
  13. $this->registerEvent('upload_request_errorfiletoolarge', 'onErrorFileTooLarge');
  14. $this->registerEvent('upload_request_errorresourceconstraint', 'onErrorResourceConstraint');
  15. if (php_sapi_name() != 'cli') {
  16. header('Access-Control-Allow-Origin: *');
  17. }
  18. }
  19. public function onRequested($package)
  20. {
  21. list($get, $put) = array_values($package->content);
  22. $this->rpc('Upload.request', $get, $put);
  23. }
  24. public function onError()
  25. {
  26. Notification::toast($this->__('upload.error_failed'));
  27. }
  28. public function onErrorFileTooLarge()
  29. {
  30. Notification::toast($this->__('upload.error_filesize'));
  31. }
  32. public function onErrorResourceConstraint()
  33. {
  34. Notification::toast($this->__('upload.error_resource_constraint'));
  35. }
  36. public function onErrorNotAllowed()
  37. {
  38. Notification::toast($this->__('upload.error_not_allowed'));
  39. }
  40. public function ajaxRequest()
  41. {
  42. $view = $this->tpl();
  43. Dialog::fill($view->draw('_upload'));
  44. }
  45. public function ajaxSend($file)
  46. {
  47. $upload = $this->user->session->getUploadService();
  48. if ($upload) {
  49. $r = new Request;
  50. $r->setTo($upload->node)
  51. ->setName($file->name)
  52. ->setSize($file->size)
  53. ->setType($file->type)
  54. ->request();
  55. }
  56. }
  57. public function ajaxFailed()
  58. {
  59. Notification::toast($this->__('upload.error_failed'));
  60. }
  61. }