edit.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. <extend name="Public:base" />
  2. <block name="content">
  3. <div class="page-header">
  4. <h1>
  5. {$breadcrumb2}
  6. <small>
  7. <i class="icon-double-angle-right"></i>
  8. {$crumbs}
  9. </small>
  10. <button name="send" id="send" form="form-blog" type="submit" style="float:right;" class="btn btn-sm btn-primary">提交</button>
  11. </h1>
  12. </div>
  13. <div class="row">
  14. <div class="col-xs-12">
  15. <div class="alert alert-block alert-success">
  16. 1、文章类型为:“商家后台”、“常见问题” 的,可以添加多篇文章<br/>
  17. 2、文章类型为:“拼团介绍” 的目前仅需要添加1篇文章即可
  18. </div>
  19. </div>
  20. <div class="col-xs-12">
  21. <div class="panel-body">
  22. <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-blog" class="form-horizontal">
  23. <notempty name="Think.get.id">
  24. <input name="blog_id" id="blog_id" type="hidden" value="{$Think.get.id}" />
  25. </notempty>
  26. <ul class="nav nav-tabs">
  27. <li class="active"><a href="#tab-general" data-toggle="tab">常规项</a></li>
  28. </ul>
  29. <div class="tab-content">
  30. <!-- 常规 START -->
  31. <div class="tab-pane active" id="tab-general">
  32. <div class="form-group required">
  33. <label class="col-sm-2 control-label" for="input-name2">标题:</label>
  34. <div class="col-sm-10">
  35. <input id="input-name2" class="form-control" type="text" placeholder="标题" name="title" value="{$blog.title|default=''}" />
  36. </div>
  37. </div>
  38. <div class="form-group required">
  39. <label class="col-sm-2 control-label" for="input-name2">内容摘要:</label>
  40. <div class="col-sm-10">
  41. <textarea id="input-meta-description2" class="form-control" placeholder="内容摘要" rows="5" name="summary">{$blog_content.summary|default=''}</textarea>
  42. </div>
  43. </div>
  44. <div class="form-group required">
  45. <label class="col-sm-2 control-label" for="input-name2">作者:</label>
  46. <div class="col-sm-10">
  47. <input id="input-name2" class="form-control" type="text" placeholder="作者" name="author" value="<?php echo empty($blog['author'])?C('SITE_NAME'):$blog['author']; ?>" />
  48. </div>
  49. </div>
  50. <div class="form-group required">
  51. <label class="col-sm-2 control-label" for="input-name2">文章类型:</label>
  52. <div class="col-sm-10">
  53. <select name="type" class="form-control">
  54. <?php foreach($blog_type as $key => $type){ ?>
  55. <option value="<?php echo $key; ?>" <?php if(!empty($blog['type']) && $blog['type'] == $key){ echo 'selected';} ?> ><?php echo $type;?></option>
  56. <?php } ?>
  57. </select>
  58. </div>
  59. </div>
  60. <div class="form-group required">
  61. <label class="col-sm-2 control-label" for="input-image">
  62. <span title="" data-toggle="tooltip" data-original-title="上传640x320的图片">图片:</span>
  63. </label>
  64. <div class="col-sm-10" id="thumb">
  65. <a href="#" data-toggle="image" class="img-thumbnail">
  66. <img osctype="image" <if condition="!empty($blog['image'])">
  67. src="__ROOT__{$blog.thumb_image}"
  68. <else />
  69. src="__ROOT__/Common/image/no_image_100x100.jpg"
  70. </if> />
  71. </a>
  72. <input osctype="image_input" type="hidden" name="image" value="{$blog.image|default=''}" id="input-image" />
  73. </div>
  74. </div>
  75. <div class="form-group">
  76. <label class="col-sm-2 control-label">状态:</label>
  77. <div class="col-sm-10">
  78. <label class="radio-inline">
  79. <input type="radio" checked="checked" value="1" name="status">启用</label>
  80. <label class="radio-inline">
  81. <input type="radio" value="0" name="status">停用</label>
  82. </div>
  83. </div>
  84. <div class="form-group">
  85. <label class="col-sm-2 control-label" for="input-description">详情:</label>
  86. <div class="col-sm-10">
  87. <textarea id="description" name="content" >{$blog_content.content|default=''}</textarea>
  88. </div>
  89. </div>
  90. <div class="form-group">
  91. <label class="col-sm-2 control-label" for="input-meta-description2">Meta标签描述:</label>
  92. <div class="col-sm-10">
  93. <textarea id="input-meta-description2" class="form-control" placeholder="Meta标签描述" rows="5" name="meta_description">{$blog.meta_description|default=''}</textarea>
  94. </div>
  95. </div>
  96. <div class="form-group">
  97. <label class="col-sm-2 control-label" for="input-meta-keyword2">Meta标签关键词:</label>
  98. <div class="col-sm-10">
  99. <textarea id="input-meta-keyword2" class="form-control" placeholder="Meta标签关键词" rows="5" name="meta_keywords">{$blog.meta_keywords|default=''}</textarea>
  100. </div>
  101. </div>
  102. </div>
  103. <!-- 常规 END -->
  104. </div>
  105. </form>
  106. </div>
  107. </div>
  108. </div>
  109. </block>
  110. <block name="javascript">
  111. <style>
  112. .table thead > tr > td, .table tbody > tr > td {
  113. vertical-align: middle;
  114. }
  115. .table thead td span[data-toggle="tooltip"]:after, label.control-label span:after {
  116. font-family: FontAwesome;
  117. color: #1E91CF;
  118. content: "\f059";
  119. margin-left: 4px;
  120. }
  121. </style>
  122. <script type="text/javascript" src="__PUBLIC__/js/swfobject.js"></script>
  123. <script type="text/javascript" src="__PUBLIC__/js/web_socket.js"></script>
  124. <script src="__PUBLIC__/fileupload/jquery.ui.widget.js"></script>
  125. <script src="__PUBLIC__/fileupload/jquery.fileupload.js"></script>
  126. <script type="text/javascript" charset="utf-8" src="__PUBLIC__/ueditor/ueditor.config.js"></script>
  127. <script type="text/javascript" charset="utf-8" src="__PUBLIC__/ueditor/ueditor.all.min.js"> </script>
  128. <script type="text/javascript" charset="utf-8" src="__PUBLIC__/ueditor/lang/zh-cn/zh-cn.js"></script>
  129. <script type="text/javascript">
  130. if (typeof console == "undefined") { this.console = { log: function (msg) { } };}
  131. // 如果浏览器不支持websocket,会使用这个flash自动模拟websocket协议,此过程对开发者透明
  132. WEB_SOCKET_SWF_LOCATION = "__PUBLIC__/swf/WebSocketMain.swf";
  133. // 开启flash的websocket debug
  134. WEB_SOCKET_DEBUG = true;
  135. var ws, name, client_list={};
  136. var domain = document.domain;
  137. // 连接服务端
  138. function connect() {
  139. // 创建websocket
  140. ws = new WebSocket("ws://pinduoduo.liofis.com:7272");
  141. // 当socket连接打开时,输入用户名
  142. ws.onopen = onopen;
  143. // 当有消息时根据消息类型显示不同信息
  144. ws.onmessage = onmessage;
  145. ws.onclose = function() {
  146. console.log("连接关闭,定时重连");
  147. connect();
  148. };
  149. ws.onerror = function() {
  150. console.log("出现错误");
  151. };
  152. }
  153. // 连接建立时发送登录信息
  154. function onopen()
  155. {
  156. //document.domain
  157. // 登录
  158. var login_data = '{"type":"login","client_name":"'+domain+'"}';
  159. console.log("websocket握手成功,发送登录数据:"+login_data);
  160. ws.send(login_data);
  161. }
  162. // 服务端发来消息时
  163. function onmessage(e)
  164. {
  165. var data = eval("("+e.data+")");
  166. switch(data['type']){
  167. // 服务端ping客户端
  168. case 'ping':
  169. ws.send('{"type":"pong"}');
  170. break;;
  171. // 登录 更新用户列表
  172. case 'login':
  173. //{"type":"login","client_id":xxx,"client_name":"xxx","client_list":"[...]","time":"xxx"}
  174. say(data['client_id'], data['client_name'], data['client_name']+' 加入了聊天室', data['time']);
  175. if(data['client_list'])
  176. {
  177. client_list = data['client_list'];
  178. }
  179. else
  180. {
  181. client_list[data['client_id']] = data['client_name'];
  182. }
  183. flush_client_list();
  184. console.log(data['client_name']+"登录成功");
  185. break;
  186. // 发言
  187. case 'say':
  188. //{"type":"say","from_client_id":xxx,"to_client_id":"all/client_id","content":"xxx","time":"xxx"}
  189. say(data['from_client_id'], data['from_client_name'], data['content'], data['time']);
  190. break;
  191. // 用户退出 更新用户列表
  192. case 'logout':
  193. //{"type":"logout","client_id":xxx,"time":"xxx"}
  194. say(data['from_client_id'], data['from_client_name'], data['from_client_name']+' 退出了', data['time']);
  195. delete client_list[data['from_client_id']];
  196. flush_client_list();
  197. }
  198. }
  199. </script>
  200. <script>
  201. $(function(){
  202. var ue = UE.getEditor('description',{
  203. initialFrameHeight:500,
  204. serverUrl: "__PUBLIC__/ueditor/php/controller.php",
  205. scaleEnabled:true
  206. });
  207. $(function(){
  208. connect();
  209. $('#send').click(function(){
  210. $.ajax({
  211. url:"",
  212. type:'post',
  213. dataType:'json',
  214. data:$('#form-blog').serialize(),
  215. success:function(ret){
  216. var s_title = $('input[name=title]').val();
  217. var blog_id = $('#blog_id').val();
  218. if(blog_id == undefined && $('select[name=type]').val() =='seller')
  219. {
  220. ws.send('{"type":"new_blog","domain":"'+domain+'","blog_id":"'+ret.blog_id+'","title":"'+s_title+'"}');
  221. }
  222. location.href = "{:U('Blog/index')}";
  223. }
  224. })
  225. return false;
  226. })
  227. })
  228. })
  229. $(function(){
  230. <present name="Think.get.id">
  231. Oscshop.setValue("status", {$blog.status|default=1});
  232. Oscshop.setValue("allow_reply", {$blog.allow_reply|default=1});
  233. </present>
  234. // tooltips on hover button-upload
  235. $('[data-toggle=\'tooltip\']').tooltip({container: 'body', html: true});
  236. // Makes tooltips work on ajax generated content
  237. $(document).ajaxStop(function() {
  238. $('[data-toggle=\'tooltip\']').tooltip({container: 'body'});
  239. });
  240. $(document).delegate('a[data-toggle=\'image\']', 'click', function(e) {
  241. e.preventDefault();
  242. var index=$(this).attr('num');
  243. var element = this;
  244. if(index==undefined){
  245. $(element).popover({
  246. html: true,
  247. placement: 'right',
  248. trigger: 'manual',
  249. content: function() {
  250. return '<button type="button" id="thumb-image" class="btn btn-primary"><i class="icon-edit"></i></button> <button type="button" id="button-clear" class="btn btn-danger"><i class="icon-trash"></i></button>';
  251. }
  252. });
  253. }else{
  254. $(element).popover({
  255. html: true,
  256. placement: 'right',
  257. trigger: 'manual',
  258. content: function() {
  259. return '<button type="button" n="'+index+'" class="btn btn-primary button-image"><i class="icon-edit"></i></button> <button type="button" id="button-clear" class="btn btn-danger"><i class="icon-trash"></i></button>';
  260. }
  261. });
  262. }
  263. $(element).popover('toggle');
  264. //图片
  265. $('#thumb-image').on('click', function() {
  266. $('#modal-image').remove();
  267. $('#form-upload').remove();
  268. $('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input osctype="btn_upload_image" type="file" name="file" /></form>');
  269. $('#form-upload input[name=\'file\']').trigger('click');
  270. $(element).popover('hide');
  271. $('[osctype="btn_upload_image"]').fileupload({
  272. dataType: 'json',
  273. url: "{:U('Image/upload_image',array('dir'=>'blog2'))}",
  274. add: function(e, data) {
  275. $parent = $('#thumb');
  276. $input = $parent.find('[osctype="image_input"]');
  277. $img = $parent.find('[osctype="image"]');
  278. data.formData = {old_blog_images:$input.val()};
  279. $img.attr('src', "__IMG__/loading.gif");
  280. data.submit();
  281. },
  282. done: function (e,data) {
  283. var image=data.result;
  284. $parent = $('#thumb');
  285. $input = $parent.find('[osctype="image_input"]');
  286. $img = $parent.find('[osctype="image"]');
  287. if(image) {
  288. // $img.prev('i').hide();
  289. $img.attr('src', '__ROOT__'+image.image_thumb);
  290. $img.show();
  291. $input.val(image.image);
  292. } else {
  293. alert('上传失败');
  294. }
  295. }
  296. });
  297. });
  298. //相册
  299. $('.button-image').on('click', function() {
  300. $('#modal-image').remove();
  301. $('#form-upload').remove();
  302. var i=$(this).attr('n');
  303. $('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input osctype="btn_upload_image" type="file" name="file" /></form>');
  304. $('#form-upload input[name=\'file\']').trigger('click');
  305. $(element).popover('hide');
  306. $('[osctype="btn_upload_image"]').fileupload({
  307. dataType: 'json',
  308. url: "{:U('Image/upload_image',array('dir'=>'blog_gallery'))}",
  309. add: function(e, data) {
  310. $parent = $('#image-row'+i);
  311. $input = $parent.find('[osctype="gallery_image_input'+i+'"]');
  312. $img = $parent.find('[osctype="gallery_image'+i+'"]');
  313. data.formData = {old_gallery_image:$input.val()};
  314. $img.attr('src', "__IMG__/loading.gif");
  315. data.submit();
  316. },
  317. done: function (e,data) {
  318. var image=data.result;
  319. $parent = $('#image-row'+i);
  320. $input = $parent.find('[osctype="gallery_image_input'+i+'"]');
  321. $img = $parent.find('[osctype="gallery_image'+i+'"]');
  322. if(image) {
  323. // $img.prev('i').hide();
  324. $img.attr('src', '__ROOT__'+image.image_thumb);
  325. $img.show();
  326. $input.val(image.image);
  327. } else {
  328. alert('上传失败');
  329. }
  330. }
  331. });
  332. });
  333. $('#button-clear').on('click', function() {
  334. $(element).find('img').attr('src', $(element).find('img').attr('data-placeholder'));
  335. $(element).parent().find('input').attr('value', '');
  336. $(element).popover('hide');
  337. });
  338. });
  339. });
  340. </script>
  341. </block>