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.
 
 
 
 
 

51 lines
1.9 KiB

  1. <?php
  2. if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../../').'/');
  3. if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
  4. require_once(DOKU_PLUGIN.'action.php');
  5. require_once(DOKU_PLUGIN.'ckgedit/scripts/setsamesite.php');
  6. class action_plugin_ckgedit_mediamanager extends DokuWiki_Action_Plugin {
  7. function __construct()
  8. {
  9. $this->setupLocale();
  10. }
  11. function register(Doku_Event_Handler $controller)
  12. {
  13. $controller->register_hook('MEDIAMANAGER_STARTED', 'AFTER', $this, 'mediaman_started');
  14. $controller->register_hook('MEDIA_UPLOAD_FINISH', 'BEFORE', $this, 'upload_finish');
  15. $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'handle_metafile');
  16. }
  17. function handle_metafile(Doku_Event $event) {
  18. $event->data['script'][] =
  19. array(
  20. 'type'=>'text/javascript',
  21. 'charset'=>'utf-8',
  22. '_data'=>'',
  23. 'src'=>DOKU_BASE.'lib/plugins/ckgedit/scripts/mediamgr.js'
  24. ) + ([ 'defer' => 'defer']);
  25. }
  26. function upload_finish(Doku_Event $event) {
  27. if(!preg_match("#^image/#",$event->data[3]) && $_COOKIE['ckgFbType'] == 'image') {
  28. if(!empty($event->data[3]) && strlen($event->data[3]) >30) {
  29. $fname = substr($event->data[3],0,29) . '. . .';
  30. }
  31. else $fname = $event->data[3];
  32. msg($this->getLang('mediamgr_imgonly') . $fname);
  33. setcookieSameSite('ckgFbType', 'image',time()-10);
  34. $event->preventDefault();
  35. }
  36. }
  37. function mediaman_started(Doku_Event $event) {
  38. if ($_GET["onselect"] == "ckg_edit_mediaman_insert") {
  39. setcookieSameSite('ckgFbType', 'image');
  40. } else if ($_GET["onselect"] == "ckg_edit_mediaman_insertlink") {
  41. setcookieSameSite('ckgFbType', 'link');
  42. }
  43. }
  44. }