video-play.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. <?php
  2. session_start();
  3. if (isset($_POST["id"])) {
  4. $id = $_POST["id"];
  5. }
  6. ?>
  7. <!doctype html>
  8. <html class="fixed">
  9. <head>
  10. <!-- Basic -->
  11. <meta charset="UTF-8">
  12. <title>BIM支援網</title>
  13. <meta name="keywords" content="HTML5 Admin Template" />
  14. <meta name="description" content="JSOFT Admin - Responsive HTML5 Template">
  15. <meta name="author" content="JSOFT.net">
  16. <script src="./script/php/clearData.php"></script>
  17. <!-- Mobile Metas -->
  18. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  19. <!-- Web Fonts -->
  20. <link href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800|Shadows+Into+Light" rel="stylesheet" type="text/css">
  21. <link href="https://vjs.zencdn.net/7.17.0/video-js.css" rel="stylesheet">
  22. <!-- Vendor CSS -->
  23. <link rel="stylesheet" href="assets/vendor/bootstrap/css/bootstrap.css" />
  24. <link rel="stylesheet" href="assets/vendor/font-awesome/css/font-awesome.css" />
  25. <link rel="stylesheet" href="assets/vendor/magnific-popup/magnific-popup.css" />
  26. <link rel="stylesheet" href="assets/vendor/bootstrap-datepicker/css/datepicker3.css" />
  27. <link rel="stylesheet" href="assets/vendor/pnotify/pnotify.custom.css" />
  28. <!-- Specific Page Vendor CSS -->
  29. <link rel="stylesheet" href="assets/vendor/jquery-ui/css/ui-lightness/jquery-ui-1.10.4.custom.css" />
  30. <link rel="stylesheet" href="assets/vendor/bootstrap-multiselect/bootstrap-multiselect.css" />
  31. <link rel="stylesheet" href="assets/vendor/morris/morris.css" />
  32. <link rel="stylesheet" href="assets/vendor/bootstrap-fileupload/bootstrap-fileupload.min.css" />
  33. <!-- Theme CSS -->
  34. <link rel="stylesheet" href="assets/stylesheets/theme.css" />
  35. <!-- Skin CSS -->
  36. <link rel="stylesheet" href="assets/stylesheets/skins/default.css" />
  37. <!-- Theme Custom CSS -->
  38. <link rel="stylesheet" href="assets/stylesheets/theme-custom.css">
  39. <!-- Head Libs -->
  40. <script src="assets/vendor/modernizr/modernizr.js"></script>
  41. <!-- chart.js -->
  42. <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
  43. <!-- DataTable -->
  44. <script src="assets/vendor/jquery/jquery.js"></script>
  45. <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/jquery.dataTables.css">
  46. <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.js"></script>
  47. <script src="./script/js/jquery.redirect.js"></script>
  48. <!-- Icon -->
  49. <link rel="shortcut icon" href="assets/images/favicon.ico" />
  50. <style>
  51. .video {
  52. color: #0088CC;
  53. }
  54. </style>
  55. </head>
  56. <body>
  57. <section class="body">
  58. <!-- start: header -->
  59. <header class="header">
  60. <div class="logo-container">
  61. <div class="banner-txt">BIM支援網</div>
  62. <div class="visible-xs toggle-sidebar-left" data-toggle-class="sidebar-left-opened" data-target="html" data-fire-event="sidebar-left-opened">
  63. <i class="fa fa-bars" aria-label="Toggle sidebar"></i>
  64. </div>
  65. </div>
  66. <!-- start: search & user box -->
  67. <div class="header-right">
  68. <span class="separator"></span>
  69. <ul class="notifications">
  70. <li>
  71. <a href="#" class="dropdown-toggle notification-icon" data-toggle="dropdown">
  72. <i class="fa fa-bell"></i>
  73. <span id="warning-count" class="badge">0</span>
  74. </a>
  75. <div class="dropdown-menu notification-menu">
  76. <div class="notification-title">
  77. <span id="warning-count2" class="pull-right label label-default">0</span>
  78. 警告
  79. </div>
  80. <div class="content">
  81. <ul>
  82. <li id="warning-style" style="display: none;">
  83. <a href="warning.php" class="clearfix">
  84. <div class="image">
  85. <i class="fa fa-warning bg-danger"></i>
  86. </div>
  87. <span class="title">人員進入危險區域</span>
  88. <span class="message">現在</span>
  89. </a>
  90. </li>
  91. <div id="warning-none">No warning</div>
  92. </ul>
  93. </div>
  94. </div>
  95. </li>
  96. </ul>
  97. <span class="separator"></span>
  98. <div id="userbox" class="userbox">
  99. <a href="#" data-toggle="dropdown">
  100. <figure class="profile-picture"> <img src="assets/images/!logged-user.jpg" alt="Joseph Doe" class="img-circle" data-lock-picture="assets/images/!logged-user.jpg" /> </figure>
  101. <div class="profile-info" data-lock-name="John Doe" data-lock-email="johndoe@JSOFT.com"> <span class="name"><?php echo $_SESSION['name'] ?></span> <span class="role">administrator</span> </div> <i class="fa custom-caret"></i>
  102. </a>
  103. <div class="dropdown-menu">
  104. <ul class="list-unstyled">
  105. <li class="divider"></li>
  106. <li> <a role="menuitem" tabindex="-1" href="./script/php/Logout.php"><i class="fa fa-power-off"></i> Logout</a> </li>
  107. </ul>
  108. </div>
  109. </div>
  110. </div>
  111. <!-- end: search & user box -->
  112. </header>
  113. <!-- end: header -->
  114. <div class="inner-wrapper">
  115. <!-- start: sidebar -->
  116. <aside id="sidebar-left" class="sidebar-left">
  117. <div class="sidebar-header">
  118. <div class="sidebar-title"> 導覽 </div>
  119. <div class="sidebar-toggle hidden-xs" data-toggle-class="sidebar-left-collapsed" data-target="html" data-fire-event="sidebar-left-toggle"> <i class="fa fa-bars" aria-label="Toggle sidebar"></i> </div>
  120. </div>
  121. <div class="nano">
  122. <div class="nano-content">
  123. <nav id="menu" class="nav-main" role="navigation">
  124. <ul class="nav nav-main">
  125. <li class="nav-active">
  126. <a href="home.php"> <i class="fa fa-home" aria-hidden="true"></i> <span>首頁</span> </a>
  127. </li>
  128. <li class="nav-parent">
  129. <a>
  130. <i class="fa fa-desktop" aria-hidden="true"></i>
  131. <span>BIM監測查詢網</span>
  132. </a>
  133. <ul class="nav nav-children">
  134. <li>
  135. <a href="#modalForm" class="modal-with-form"> <i class="fa fa-upload" aria-hidden="true"></i> <span>上傳CSV</span> </a>
  136. <!-- Modal Form -->
  137. <div id="modalForm" class="modal-block modal-block-primary mfp-hide">
  138. <section class="panel">
  139. <header class="panel-heading">
  140. <h2 class="panel-title">上傳表單</h2>
  141. </header>
  142. <div class="panel-body">
  143. <form id="CSVform" class="form-horizontal mb-lg" action="./script/php/upload.php" method="post" enctype="multipart/form-data">
  144. <div class="form-group">
  145. <label class="col-md-3 control-label">檔案上傳</label>
  146. <div class="col-md-6">
  147. <div class="fileupload fileupload-new" data-provides="fileupload">
  148. <div class="input-append">
  149. <div class="uneditable-input"> <i class="fa fa-file fileupload-exists"></i> <span class="fileupload-preview"></span> </div> <span class="btn btn-default btn-file">
  150. <span class="fileupload-exists">變更檔案</span> <span class="fileupload-new">選擇檔案</span>
  151. <input type="file" name="fileToUpload" id="fileToUpload" /> </span> <a href="#" class="btn btn-default fileupload-exists" data-dismiss="fileupload">移除檔案</a>
  152. </div>
  153. </div>
  154. </div>
  155. </div>
  156. </form>
  157. </div>
  158. <footer class="panel-footer">
  159. <div class="row">
  160. <div class="col-md-12 text-right">
  161. <button class="btn btn-primary modal-confirm" onclick="uploadCSV()">Submit</button>
  162. <button class="btn btn-default modal-dismiss">Cancel</button>
  163. </div>
  164. </div>
  165. </footer>
  166. </section>
  167. </div>
  168. </li>
  169. <li class="nav-parent">
  170. <a href="C3Index.php">C3工地監測儀器</a>
  171. <ul class="nav nav-children">
  172. </ul>
  173. </li>
  174. </ul>
  175. </li>
  176. <li class="nav-parent">
  177. <a> <i class="fa fa-cloud" aria-hidden="true"></i> <span>BIM支援網</span> </a>
  178. <ul class="nav nav-children">
  179. <li class=""><a href="component-list.php"><i class="fa fa-briefcase" aria-hidden="true"></i><span>BIM元件庫</span></a></li>
  180. <li class=""><a href="api-list.php"><i class="fa fa-gear" aria-hidden="true"></i><span>BIM程式庫</span></a></li>
  181. <li class=""><a href="video-list.php"><i class="fa fa-video-camera" aria-hidden="true"></i><span>BIM影音庫</span></a></li>
  182. </ul>
  183. </li>
  184. </ul>
  185. </nav>
  186. </div>
  187. </div>
  188. </aside>
  189. <!-- end: sidebar -->
  190. <section role="main" class="content-body">
  191. <header class="page-header">
  192. <h2 id="header">BIM影音網 - </h2>
  193. </header>
  194. <div class="row">
  195. <div class="col-md-9">
  196. <section class="panel" id="video-body">
  197. <!--<video width="100%" controls id="video" controlslist="nodownload" poster="./assets/images/video-loading.gif">
  198. </video>-->
  199. <video class="video-js vjs-big-play-centered vjs-16-9" controls="" width="100%" data-setup="{}" id="video" poster="./assets/images/video-loading.gif" preload="auto">
  200. <p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
  201. </video>
  202. </section>
  203. </div>
  204. <div class="col-md-3">
  205. <section class="panel" id="video-list-panel">
  206. <div class="panel-body" style="height: 100%;overflow: auto;">
  207. <span>相關影片</span>
  208. <ul class="nav nav-main" id="video-list"></ul>
  209. </div>
  210. </section>
  211. </div>
  212. <div class="col-md-3">
  213. <section class="panel" id="file-list-panel">
  214. <div class="panel-body" style="height: 100%;overflow: auto;">
  215. <span>參考檔案</span>
  216. <ul class="nav nav-main" id="file-list"></ul>
  217. </div>
  218. </section>
  219. </div>
  220. </div>
  221. </div>
  222. </section>
  223. </div>
  224. <script src="https://vjs.zencdn.net/7.17.0/video.min.js"></script>
  225. <script>
  226. const fileType = {
  227. "pptx": "fa-file-powerpoint-o",
  228. "ppt": "fa-file-powerpoint-o",
  229. "docx": "fa-file-word-o",
  230. "doc": "fa-file-word-o",
  231. "xls": "fa-file-excel-o",
  232. "xlsx": "fa-file-excel-o",
  233. "pdf": "fa-file-pdf-o",
  234. "zip": "fa-file-archive-o",
  235. "rar": "fa-file-archive-o",
  236. }
  237. var id = '<?php echo ($id); ?>';
  238. $(document).ready(function() {
  239. getVideoInfo();
  240. getVideoFile();
  241. $('#video').bind('contextmenu', function() {
  242. return false;
  243. });
  244. setListHeight();
  245. });
  246. $(window).resize(function() {
  247. setListHeight();
  248. });
  249. $(".sidebar-toggle").click(function() {
  250. setTimeout(function() {
  251. setListHeight();
  252. }, 10);
  253. });
  254. function getVideoInfo() {
  255. $.ajax({
  256. url: "./script/php/video/getInfo.php",
  257. type: "POST",
  258. data: {
  259. id: id,
  260. },
  261. dataType: "json"
  262. }).done(function(result) {
  263. $("#header").append(result[0].title);
  264. getVideoList(result[0].dir_name);
  265. }).error(function(error) {
  266. console.log(error);
  267. });
  268. }
  269. function getVideoList(dir) {
  270. $.ajax({
  271. url: "./script/php/video/getList.php",
  272. type: "POST",
  273. data: {
  274. dir: dir,
  275. },
  276. dataType: "json"
  277. }).done(function(result) {
  278. let videos = result["Video_Table"];
  279. let files = result["File_Table"];
  280. $("#video-list").empty();
  281. for (j = 0; j < videos.length; j++) {
  282. if (videos[j].id == id)
  283. $("#video-list").append("<li><a style='color:#0088CC;background-color:#21262d' href = '#' onclick='getVideo(" + videos[j].id + ")'><i class = 'fa fa-video-camera'></i><span>" + videos[j].title + '</span></a></li>');
  284. else
  285. $("#video-list").append("<li><a style='color:#0088CC;' href = '#' onclick='getVideo(" + videos[j].id + ")'><i class = 'fa fa-video-camera'></i><span>" + videos[j].title + '</span></a></li>');
  286. }
  287. for (j = 0; j < files.length; j++) {
  288. $("#file-list").append("<li><a style='color:#0088CC;' class='video' href = '#' onclick='getFile(" + files[j].id + ")'><i class = 'fa " + fileType[files[j].type] + "'></i><span>" + files[j].title + "." + files[j].type + '</span></a></li>');
  289. }
  290. }).error(function(error) {
  291. console.log(error);
  292. });
  293. }
  294. function setListHeight() {
  295. $("#video-list-panel").height($("#video-body").height() * 0.7);
  296. $("#file-list-panel").height($("#video-body").height() * 0.3);
  297. }
  298. function getVideoFile() {
  299. $.ajax({
  300. url: "./script/php/video/access2.php",
  301. type: "POST",
  302. data: {
  303. id: id,
  304. },
  305. //dataType: "json"
  306. }).done(function(result) {
  307. console.log("done:");
  308. console.log(result);
  309. var video = videojs("video");
  310. video.src({
  311. src: result,
  312. });
  313. video.poster = result
  314. }).error(function(error) {
  315. console.log("e:" + error);
  316. });
  317. }
  318. /*function getVideoFile() {
  319. var xhr = new XMLHttpRequest();
  320. var url = "./script/php/video/access.php";
  321. xhr.open('POST', url, true);
  322. xhr.responseType = 'blob';
  323. xhr.onload = function(e) {
  324. if (this.status == 200) {
  325. console.log("請求成功");
  326. var video = document.getElementById("video");
  327. video.src = window.URL.createObjectURL(this.response);
  328. video.removeAttribute("poster");
  329. video.onload = function(e) {
  330. window.URL.revokeObjectURL(video.src);
  331. };
  332. }
  333. };
  334. xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  335. xhr.send("video=" + id);
  336. }*/
  337. function getFile(id) {
  338. window.location.href = "./script/php/video/getFile.php?id=" + id;
  339. }
  340. function getVideo(id) {
  341. $.redirect('./video-play.php', {
  342. 'id': id
  343. });
  344. }
  345. </script>
  346. <!-- Vendor -->
  347. <script src="assets/vendor/jquery-browser-mobile/jquery.browser.mobile.js"></script>
  348. <script src="assets/vendor/bootstrap/js/bootstrap.js"></script>
  349. <script src="assets/vendor/nanoscroller/nanoscroller.js"></script>
  350. <script src="assets/vendor/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
  351. <script src="assets/vendor/magnific-popup/magnific-popup.js"></script>
  352. <script src="assets/vendor/jquery-placeholder/jquery.placeholder.js"></script>
  353. <!-- Specific Page Vendor -->
  354. <script src="assets/vendor/jquery-ui/js/jquery-ui-1.10.4.custom.js"></script>
  355. <script src="assets/vendor/jquery-ui-touch-punch/jquery.ui.touch-punch.js"></script>
  356. <script src="assets/vendor/jquery-appear/jquery.appear.js"></script>
  357. <script src="assets/vendor/bootstrap-multiselect/bootstrap-multiselect.js"></script>
  358. <script src="assets/vendor/jquery-easypiechart/jquery.easypiechart.js"></script>
  359. <script src="assets/vendor/flot/jquery.flot.js"></script>
  360. <script src="assets/vendor/flot-tooltip/jquery.flot.tooltip.js"></script>
  361. <script src="assets/vendor/flot/jquery.flot.pie.js"></script>
  362. <script src="assets/vendor/flot/jquery.flot.categories.js"></script>
  363. <script src="assets/vendor/flot/jquery.flot.resize.js"></script>
  364. <script src="assets/vendor/jquery-sparkline/jquery.sparkline.js"></script>
  365. <script src="assets/vendor/raphael/raphael.js"></script>
  366. <script src="assets/vendor/morris/morris.js"></script>
  367. <script src="assets/vendor/gauge/gauge.js"></script>
  368. <script src="assets/vendor/snap-svg/snap.svg.js"></script>
  369. <script src="assets/vendor/liquid-meter/liquid.meter.js"></script>
  370. <script src="assets/vendor/jqvmap/jquery.vmap.js"></script>
  371. <script src="assets/vendor/jqvmap/data/jquery.vmap.sampledata.js"></script>
  372. <script src="assets/vendor/bootstrap-fileupload/bootstrap-fileupload.min.js"></script>
  373. <script src="assets/vendor/jquery-autosize/jquery.autosize.js"></script>
  374. <script src="assets/vendor/pnotify/pnotify.custom.js"></script>
  375. <!-- Theme Base, Components and Settings -->
  376. <script src="assets/javascripts/theme.js"></script>
  377. <!-- Theme Custom -->
  378. <script src="assets/javascripts/theme.custom.js"></script>
  379. <!-- Theme Initialization Files -->
  380. <script src="assets/javascripts/theme.init.js"></script>
  381. <!-- Examples -->
  382. <script src="assets/javascripts/ui-elements/examples.modals.js"></script>
  383. <script src="script/js/notifications.js"></script>
  384. <!-- Main-->
  385. <script src="script/js/main.js"></script>
  386. </section>
  387. </body>
  388. </html>