Видео на форуме без скачивания

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 5 ноября 2023 в 23:30

Доброго времени суток! Подскажите пожалуйста, как вывести видео (не YouTube), а свои с камеры на форум. Сейчас при прикреплении файла, его можно сначала скачать, а далее уже смотреть. Мне же необходимо, чтобы сразу была возможность просмотра. 

Пользователи выкладывают часто видео с камер видеонаблюдения. И не хотят так заморачиваться с просмотром. Самостоятельно решения в яндексе не нашла:(

Добавлено спустя 9 минут

Совсем забыла указать, форум этот instantcms.ru/addons/forum-official.html

Версия cms 2.15.2

Добавлено спустя 33 минуты

Так понимаю мне нужно вот это, но куда вставить не могу найти, все файлы просмотрела

  1. / / Customize the callback content of the file selector This method only triggers the button above the image button.
  2. file_picker_callback: function (callback, value, meta) {
  3. if (meta.filetype === 'file') {
  4. callback('https://www.baidu.com/img/bd_logo1.png', { text: 'My text' });
  5. }
  6. if (meta.filetype === 'image') {
  7. callback('https://www.baidu.com/img/bd_logo1.png', { alt: 'My alt text' });
  8. }
  9. // Mainly judge Media
  10. if (meta.filetype === 'media') {
  11. // Dynamically create upload input input, and simulate click upload operation to achieve local uploading video effects.
  12. let input = document.createElement('input');// Create a hidden input
  13. input.setAttribute('type', 'file');
  14. input.setAttribute("accept", ".mp4");
  15. let that = this;
  16. input.onchange = function(){
  17. let file = this.files[0];
  18. let fd = new FormData();
  19. fd.append("file", file);
  20. _this.$axios.post("......", fd).then((res) => {
  21. let rr = res.data.data;
  22. // Callback callback The role is to display the URL of the selected video in the input box.
  23. callback(rr.filePath);
  24. });
  25. }
  26. // Trigger Click
  27. input.click();
  28. }
  29. },
  30.  
#2 9 ноября 2023 в 11:23

Нужно клиентское дополнение, которое будет при клике на ссылку файла, отменять загрузку, обрабатывать этот файл и вставлять в медиа плеер, который тоже должен быть) Как то так наверное)

Приведённый вами код, это кусок откуда то при чём не похоже, что для вашего случая.

#3 9 ноября 2023 в 12:03

Плагин для редактора нужен. Может есть готовый, надо искать 

#4 9 ноября 2023 в 16:28

Создаём файл

\system\controllers\forum\actions\get_video.php

  1. <?php
  2. class actionForumGetVideo extends cmsAction {
  3. public function run($post_id) {
  4. if (!$post_id) {
  5. return $this->cms_template->renderJSON('false');
  6. }
  7. $item = $this->model->getItemById('uploaded_files',$post_id);
  8. if($item){
  9. return $this->cms_template->renderJSON($item['path']);
  10. }
  11. return $this->cms_template->renderJSON('false');
  12. }
  13. }

Далее в файле

\templates\modern\controllers\forum\posts_view.tpl.php

в самый низ добавляем.

.
  1. <?php ob_start(); ?>
  2. <script src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>
  3. <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css">
  4. <script>
  5. var a = document.querySelectorAll('.icms-forum__post-files-file')
  6. let ex = ["mp4", "flv"]
  7. var arr = []
  8. a.forEach(el => {
  9. var text = el.children[0].innerText.trim()
  10. arr = text.split('.')
  11. var exp = arr[1]
  12. var b = ex.includes(exp)
  13. if (!ex.includes(arr[1])) return
  14. var l = el.children[0].firstElementChild
  15. var url = new URL(l.href)
  16. var path = url.pathname
  17. var id = path.split('/')[3];
  18. l.dataset.href = l.href
  19. l.id = id
  20. l.setAttribute('href', 'javascript:;')
  21. l.setAttribute('onclick', 'getVideo(this)')
  22. })
  23.  
  24. function getUrl(id) {
  25. return $.ajax({
  26. url: "/forum/get_video/" + id,
  27. type: "POST",
  28. data: {},
  29. });
  30. }
  31.  
  32. function getVideo(e) {
  33. var URL = getUrl(e.id)
  34. var url = ''
  35. try {
  36. URL
  37. .done(function(data) {
  38. if (data != "false") {
  39. url += JSON.parse(data)
  40. }
  41. $.fancybox.open({
  42. type: 'iframe',
  43. src: '/upload/' + url,
  44. smallBtn: true,
  45. iframe: {
  46. preload: false,
  47. css: {
  48. width: '600px'
  49. }
  50. }
  51. });
  52. })
  53. } catch (e) {}
  54. }
  55. </script>
  56. <?php $this->addBottom(ob_get_clean()); ?>
..
#5 22 ноября 2023 в 13:47

 Lora, ОГРОМНОЕ вам спасибо. Вы потрясающий человек!

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.