mediares.lbi 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. {include file="{$_lang.moban}/library/member_paths.lbi"}
  2. <div class="container">
  3. <div class="content">
  4. {if $act =="panos"}
  5. <div class="nav_wrap">
  6. <ul class="nav nav-secondary">
  7. <li class="active"><a href="/member/mediares?act=panos">全景图片</a></li>
  8. <li><a href="/member/mediares?act=material">素材</a></li>
  9. <li><a href="/member/mediares?act=msc">音乐</a></li>
  10. <button class="btn btn-primary up_btn" data-toggle="modal" data-target="#panos_up_modal">上传全景图</button>
  11. </ul>
  12. </div>
  13. <div class="list_wrap">
  14. <div class="cards">
  15. </div>
  16. <div id="pager_wrap" style="margin-top:-10px;"></div>
  17. </div>
  18. <div class="modal fade" id="panos_up_modal">
  19. <div class="modal-dialog">
  20. <div class="modal-content">
  21. <div class="modal-header">
  22. <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">关闭</span></button>
  23. <h4 class="modal-title">上传资源:</h4>
  24. </div>
  25. <div class="modal-body">
  26. <input id="imgUpload" name="file" type="file" multiple="" accept="image/jpeg,image/tiff" class="">
  27. </div>
  28. </div>
  29. </div>
  30. </div>
  31. <link rel="stylesheet" href="/static/css/fileinput.min.css">
  32. <script language="JavaScript" type="text/javascript" src="/static/js/fileinput-v4.34.js"></script>
  33. <script language="JavaScript" type="text/javascript" src="/static/js/fileinput_locale_zh.js"></script>
  34. <script>
  35. var up_url = "{$up_url}";
  36. {literal}
  37. var type = 1;
  38. var qn_token ={} ;
  39. var upload_flag = false;
  40. $(function(){
  41. list(1);
  42. $("#imgUpload").fileinput({
  43. language: 'zh',
  44. showUpload: false,
  45. showRemove: false,
  46. showCancel: false,
  47. maxFileCount: 1,
  48. // showPreview:false;
  49. previewFileType: "image",
  50. allowedFileExtensions: ["jpg","tif", "tiff"],
  51. msgInvalidFileExtension: '不支持文件类型"{name}"。只支持扩展名为"{extensions}"的文件。',
  52. browseClass: "btn btn-primary",
  53. browseLabel: "选择本地全景图片",
  54. browseIcon: "<i class=\"icon icon-picture\"></i> ",
  55. removeClass: "btn btn-danger",
  56. removeLabel: "删除",
  57. removeIcon: "<i class=\"icon icon-trash\"></i> ",
  58. uploadUrl: up_url,
  59. uploadAsync: true,
  60. // previewSettings: {
  61. // image: {width: "auto", height: "100px"}
  62. // },
  63. fileActionSettings: {},
  64. // maxFileSize:"",
  65. dropZoneTitle: "拖拽图片或点击下面按钮上传",
  66. textEncoding: "UTF-8",
  67. uploadExtraData: get_token
  68. }).on('fileloaded', function(event, file, previewId, index, reader) {
  69. var filename = file.name.substr(file.name.lastIndexOf("."));
  70. if(filename=='.tiff' || filename=='.tif'){
  71. var tiff = new Tiff({buffer: reader.result});
  72. var width = tiff.width();
  73. var height = tiff.height();
  74. checkImgWidthAndHeight(width,height,previewId);
  75. return ;
  76. }
  77. var objUrl = window.URL || window.webkitURL;
  78. var url = objUrl.createObjectURL(file);
  79. var img = new Image();
  80. img.src = url;
  81. img.onload = function(){
  82. checkImgWidthAndHeight(img.naturalWidth,img.naturalHeight,previewId);
  83. objUrl.revokeObjectURL(url);
  84. }
  85. var extraData = $("#imgUpload").fileinput('uploadExtraData');
  86. extraData.key = qn_token.prefix+generic_name()+filename;
  87. extraData.filename = file.name;
  88. $("#imgUpload").fileinput("upload");
  89. $("#imgUpload").hide();
  90. var alert_obj = alert_notice("上传图片成功,等待程序处理....","success","top",0);
  91. }).on('filebatchuploadcomplete', function (event, files, extra) {
  92. upload_flag = true;
  93. var files = $('#imgUpload').fileinput('getFileStack');
  94. $.post("/member/mediares",{
  95. "act":"pano_add",
  96. "imgsrc":extra.key,
  97. "imgname":extra.filename
  98. },function(data){
  99. data = eval("("+data+")");
  100. if (data.flag) {
  101. alert_notice("上传成功","success");
  102. setTimeout(function(){
  103. window.location.reload();
  104. },1500);
  105. }else{
  106. alert_notice(data.msg);
  107. }
  108. $("#imgUpload").show();
  109. $("#imgUpload").fileinput("clear");
  110. $("#panos_up_modal").modal("hide");
  111. })
  112. });
  113. })
  114. function get_token() {
  115. if (qn_token.prefix||upload_flag) {
  116. if (upload_flag) {
  117. qn_token={};
  118. upload_flag=false;
  119. }
  120. return qn_token;
  121. }
  122. $.ajax({
  123. url:'/get_token.php',
  124. method:'post',
  125. data:{'act':'qj_img'},
  126. async: false,
  127. success:function(res){
  128. var obj = eval ("(" + res + ")");
  129. qn_token.prefix= obj.prefix;
  130. if (obj.token)
  131. qn_token.token = obj.token;
  132. else if(obj.policy){
  133. qn_token.policy = obj.policy;
  134. qn_token.OSSAccessKeyId = obj.accessid;
  135. qn_token.host = obj.host;
  136. qn_token.signature = obj.signature;
  137. }
  138. return qn_token;
  139. }
  140. })
  141. return qn_token;
  142. }
  143. function generic_name() {
  144.   var $chars = 'abcdefghijklmnopqrstwxyz0123456789';
  145.   var maxPos = $chars.length;
  146.   var pwd = '';
  147.   for (i = 0; i < 3; i++) {
  148.     pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
  149.   }
  150.   return new Date().getTime()+pwd;
  151. }
  152. function checkImgWidthAndHeight(width,height,previewId){
  153. if(width != 2*height){
  154. $('#imgUpload').fileinput('_showError','球面全景图片必须为2:1比例');
  155. return false;
  156. }
  157. return true;
  158. }
  159. {/literal}
  160. </script>
  161. {elseif $act =="material"}
  162. <div class="nav_wrap">
  163. <ul class="nav nav-secondary">
  164. <li><a href="/member/mediares?act=panos">全景图片</a></li>
  165. <li class="active"><a href="/member/mediares?act=material">素材</a></li>
  166. <li><a href="/member/mediares?act=msc">音乐</a></li>
  167. <!-- <button class="btn btn-primary up_btn">上传素材</button> -->
  168. </ul>
  169. </div>
  170. <div class="list_wrap">
  171. <div class="cards">
  172. </div>
  173. <div id="pager_wrap" style="text-align:center"></div>
  174. </div>
  175. <script>
  176. var type = 2;
  177. $(function(){
  178. list(1);
  179. })
  180. </script>
  181. {elseif $act =="msc"}
  182. <div class="nav_wrap">
  183. <ul class="nav nav-secondary">
  184. <li><a href="/member/mediares?act=panos">全景图片</a></li>
  185. <li ><a href="/member/mediares?act=material">素材</a></li>
  186. <li class="active"><a href="/member/mediares?act=msc">音乐</a></li>
  187. <!-- <button class="btn btn-primary up_btn">上传素材</button> -->
  188. </ul>
  189. </div>
  190. <div class="list_wrap">
  191. <div class="cards">
  192. </div>
  193. <div id="pager_wrap" style="text-align:center"></div>
  194. </div>
  195. <script>
  196. var type = 3;
  197. $(function(){
  198. list(1);
  199. $(".cards").on("click",".audio_wrap",function(){
  200. var audio =document.getElementById("audio_"+$(this).data("aid"));
  201. if(audio!==null){
  202. if(audio.paused){
  203. audio.play();
  204. $(this).children("img").attr("src","/static/images/pause.png");
  205. $(this).children("span").text("暂停");
  206. }else{
  207. audio.pause();
  208. $(this).children("img").attr("src","/static/images/play.png");
  209. $(this).children("span").text("试听");
  210. }
  211. }
  212. });
  213. })
  214. </script>
  215. {/if}
  216. </div>
  217. </div>
  218. <script type="text/javascript">
  219. function list(page){
  220. $.post("/member/mediares",{
  221. "act":"list_media_res",
  222. "type":type,
  223. "page":page,
  224. "pageSize":12
  225. },function(data){
  226. var data = eval("("+data+")");
  227. var list = data.list;
  228. var h="";
  229. if (list.length>0) {
  230. for (var i = 0; i <list.length; i++) {
  231. var o = list[i];
  232. if(type==1){
  233. h += ' <div class="col-md-4 col-sm-6 col-lg-3">'+
  234. ' <a class="card" href="###">'+
  235. '<div class="top_cover"><span class="pull-right" onclick="del('+o.pk_img_main+',1)"><i class="icon-trash"></i>删除</span></div>'+
  236. '<img src="'+o.thumb_path+'" style="height:200px;width:100%" alt="'+o.filename+'">'+
  237. ' <div class="card-content">'+
  238. '<div class="row">'+
  239. '<div class="col-md-8"><span class="text-muted card_text" id="panos_name_'+o.pk_img_main+'">'+o.filename+'</span></div>'+
  240. ' <div class="col-md-4">'+
  241. '<button class="btn btn-link card_rename" type="button" onclick="edit('+o.pk_img_main+',1,\''+o.filename+'\')">重命名</button>'+
  242. '</div>'+
  243. '</div>'+
  244. '</div>'+
  245. '</a>'+
  246. '</div>';
  247. }else if(type==2){
  248. h += ' <div class="col-md-4 col-sm-6 col-lg-3">'+
  249. ' <a class="card" href="###">'+
  250. '<div class="top_cover"><span class="pull-right" onclick="del('+o.pk_media_res+',2)"><i class="icon-trash"></i>删除</span></div>'+
  251. '<img src="'+o.absolutelocation+'" style="height:200px;width:100%" alt="'+o.media_name+'">'+
  252. ' <div class="card-content">'+
  253. '<div class="row">'+
  254. '<div class="col-md-8"><span class="text-muted card_text" id="panos_name_'+o.pk_media_res+'">'+o.media_name+'</span></div>'+
  255. ' <div class="col-md-4">'+
  256. '<button class="btn btn-link card_rename" type="button" onclick="edit('+o.pk_media_res+',2,\''+o.media_name+'\')">重命名</button>'+
  257. '</div>'+
  258. '</div>'+
  259. '</div>'+
  260. '</a>'+
  261. '</div>';
  262. }else if(type ==3){
  263. h += ' <div class="col-md-4 col-sm-6 col-lg-3">'+
  264. '<audio id="audio_'+o.pk_media_res+'" src="'+o.absolutelocation+'" ></audio>'+
  265. ' <a class="card" >'+
  266. '<div class="top_cover"><span class="pull-right" onclick="del('+o.pk_media_res+',3)"><i class="icon-trash"></i>删除</span></div>'+
  267. '<div class="audio_wrap" data-aid="'+o.pk_media_res+'"><img src="/static/images/play.png" alt="'+o.media_name+'"><span>试听</span></div>'+
  268. ' <div class="card-content">'+
  269. '<div class="row">'+
  270. '<div class="col-md-8"><span class="text-muted card_text" id="panos_name_'+o.pk_media_res+'">'+o.media_name+'</span></div>'+
  271. ' <div class="col-md-4">'+
  272. '<button class="btn btn-link card_rename" type="button" onclick="edit('+o.pk_media_res+',3,\''+o.media_name+'\')">重命名</button>'+
  273. '</div>'+
  274. '</div>'+
  275. '</div>'+
  276. '</a>'+
  277. '</div>';
  278. }
  279. }
  280. var pg = new Page('list',data.pageCount,data.currentPage);
  281. $("#pager_wrap").html(pg.printHtml());
  282. }else{
  283. h+="<div style='text-align: center;font-size: 18px; margin-top: 30px; ' class='text-muted'>没有结果!</div>"
  284. }
  285. $(".cards").html(h);
  286. })
  287. }
  288. function edit(media_id,type,value){
  289. bootbox.prompt({
  290. buttons: {
  291. confirm: {
  292. label: '确认',
  293. className: 'btn-primary'
  294. },
  295. cancel: {
  296. label: '取消',
  297. className: 'btn-default'
  298. }
  299. },
  300. value: value?value:"",
  301. title:"重命名:",
  302. callback:function(result) {
  303. if (result!=null) {
  304. result = $.trim(result);
  305. if (result.length<1||result.length>100) {
  306. alert_notice("名字长度在1到100之间");
  307. return false;
  308. }else{
  309. $.post("/member/mediares",{
  310. "media_id":media_id,
  311. "type":type,
  312. "name":result,
  313. 'act':"media_rename"
  314. },function(res){
  315. res = eval("("+res+")");
  316. if (res.flag) {
  317. alert_notice("编辑成功","success");
  318. $("#panos_name_"+media_id).text(result);
  319. }else{
  320. alert_notice(res.msg);
  321. }
  322. })
  323. }
  324. }
  325. }
  326. })
  327. }
  328. function del(media_id,type){
  329. bootbox.confirm({
  330. message:"确定要永久删除吗?",
  331. buttons: {
  332. confirm: {
  333. label: '确认',
  334. className: 'btn-primary'
  335. },
  336. cancel: {
  337. label: '取消',
  338. className: 'btn-default'
  339. }
  340. },
  341. title:"提示: ",
  342. callback:function(result) {
  343. if(result){
  344. alert_notice("等待执行...","success",'top',5000);
  345. $.post("/member/mediares",{
  346. 'act':'media_delete',
  347. 'media_id':media_id,
  348. "type":type
  349. },function(result){
  350. result = eval("("+result+")");
  351. if (result.flag) {
  352. alert_notice("操作成功","success");
  353. window.location.reload();
  354. }else{
  355. alert_notice(result.msg);
  356. }
  357. })
  358. }
  359. }
  360. })
  361. }
  362. </script>