找回密码
 注册加入

扫一扫,极速登录

QQ登录

只需一步,快速开始

搜索
查看: 3735|回复: 0

引用DZ自带上传的方法总结(绑定帖子法)

[复制链接]
TA的专栏
发表于 2013-3-24 13:45:58 | 显示全部楼层 |阅读模式
首先,在模版中要加入调用按钮
  1. <div id="check_bar" class="bar">
  2. <!--{eval $seditor = array('fastpost', array('bold', 'color', 'link', 'quote', 'img', 'smilies', 'flash', 'quote'), 0, '<span class="pipe z">|</span><span id="spanButtonPlaceholder">'.lang('template', 'upload').'</span>');}-->
  3. <!--{subtemplate common/seditor}-->
  4. </div>
  5. <div class="area">
  6. <textarea rows="5" cols="80" name="message" id="fastpostmessage" tabindex="4" class="pt" style="height:300px;" required="required"></textarea>
  7. </div>
  8. </div>
复制代码
以上代码中,定义了SEDITOR对应fastpost为id前缀的textarea文本框,然后在常用标签之外,加入了上传按钮位置,也就是
  1. <span class="pipe z">|</span>
复制代码
之后的那部分。之后需要用一段JS来初始化变量
  1. <script type="text/javascript">
  2. var editorid = '';
  3. var ATTACHNUM = {'imageused':0,'imageunused':0,'attachused':0,'attachunused':0}, ATTACHUNUSEDAID = new Array(), IMGUNUSEDAID = new Array();
  4. </script>
复制代码
模版中最后的工作如下:

  1.                                         <div class="fieldset flash" id="attachlist"></div>
  2.                                                 <!--{subtemplate common/upload}-->
  3.                                                 <script type="text/javascript">
  4.                                                         var postminchars = parseInt('$_G['setting']['minpostsize']');
  5.                                                         var postmaxchars = parseInt('$_G['setting']['maxpostsize']');
  6.                                                         var disablepostctrl = parseInt('{$_G['group']['disablepostctrl']}');
  7.                                                         var fid = parseInt(120);
  8.                                                         var upload = new SWFUpload({
  9.                                                                 upload_url: "{$_G[siteurl]}misc.php?mod=swfupload&action=swfupload&operation=upload&fid=120",
  10.                                                                 post_params: {"uid" : "$_G[uid]", "hash":"$swfconfig[hash]"},
  11.                                                                 file_size_limit : "$swfconfig[max]",
  12.                                                                 file_types : "$swfconfig[attachexts][ext]",
  13.                                                                 file_types_description : "$swfconfig[attachexts][depict]",
  14.                                                                 file_upload_limit : $swfconfig['limit'],
  15.                                                                 file_queue_limit : 0,
  16.                                                                 swfupload_preload_handler : preLoad,
  17.                                                                 swfupload_load_failed_handler : loadFailed,
  18.                                                                 file_dialog_start_handler : fileDialogStart,
  19.                                                                 file_queued_handler : fileQueued,
  20.                                                                 file_queue_error_handler : fileQueueError,
  21.                                                                 file_dialog_complete_handler : fileDialogComplete,
  22.                                                                 upload_start_handler : uploadStart,
  23.                                                                 upload_progress_handler : uploadProgress,
  24.                                                                 upload_error_handler : uploadError,
  25.                                                                 upload_success_handler : uploadSuccess,
  26.                                                                 upload_complete_handler : uploadComplete,
  27.                                                                 button_image_url : "{IMGDIR}/uploadbutton_small.png",
  28.                                                                 button_placeholder_id : "spanButtonPlaceholder",
  29.                                                                 button_width: 17,
  30.                                                                 button_height: 25,
  31.                                                                 button_cursor:SWFUpload.CURSOR.HAND,
  32.                                                                 button_window_mode: "transparent",
  33.                                                                 custom_settings : {
  34.                                                                         progressTarget : "attachlist",
  35.                                                                         uploadSource: 'forum',
  36.                                                                         uploadType: 'attach',
  37.                                                                         fid: 120,
  38.                                                                         <!--{if $swfconfig['maxsizeperday']}-->
  39.                                                                         maxSizePerDay: $swfconfig['maxsizeperday'],
  40.                                                                         <!--{/if}-->
  41.                                                                         <!--{if $swfconfig['maxattachnum']}-->
  42.                                                                         maxAttachNum: $swfconfig['maxattachnum'],
  43.                                                                         <!--{/if}-->
  44.                                                                         uploadFrom: 'fastpost'
  45.                                                                 },
  46.                                                                 debug: false
  47.                                                         });
  48.                                                 </script>
  49.                                 </div>
复制代码
这是上传的控制JS,其中需要注意如下几点:
  • 引入common/upload作为上传JS的引入
  • var fid = parseInt(120);来定义上传绑定的帖子所在的板块FID
  • button_placeholder_id : "spanButtonPlaceholder",来定义在编辑器中用上传flash替换的span的ID
  • button_image_url : "{IMGDIR}/uploadbutton_small.png",是定义上传按钮的图片
  • custom_settings 设定组为最重要的部分,其中
  • progressTarget : "attachlist",定义上传成功后返回附件列表的DIV
  • uploadSource: 'forum',定义上传模式
  • uploadType: 'attach',定义上传类型
  • fid: 120,再次定义版块
  • uploadFrom: 'fastpost'定义上传来源(本处为借鉴版块列表的快速发贴,因此定义为fastpost)
  • 最后,debug: false是定义是否开启上传的DEBUG的

到此,模版中的工作结束,转到对应PHP页面

作为发帖页面,一般会常规性引入:
  1. require_once libfile('function/forum');
  2. require_once libfile('function/forumlist');
  3. require_once libfile('function/discuzcode');
  4. require_once libfile('function/post');
  5. loadforum(120);
  6. $forum = $_G['forum'];
复制代码
本例中引入了forumlist是因为模拟版块来实现DX3的模块化发帖初始$forum变量
  1. //加载未使用附件
  2.         $attachlist = getattach(0);
  3.         $attachs = $attachlist['attachs'];
  4.         $imgattachs = $attachlist['imgattachs'];
  5.         unset($attachlist);
  6.         !isset($attachs['unused']) && $attachs['unused'] = array();
  7.         !isset($imgattachs['unused']) && $imgattachs['unused'] = array();
  8.         foreach($attachs['unused'] as $value){
  9.                 $attachlist[$value['aid']] = $value;
  10.         }
  11.         foreach($imgattachs['unused'] as $value){
  12.                 $attachlist[$value['aid']] = $value;
  13.         }
复制代码
此段代码用于加载未使用的附件和图片,然后把附件以及图片用aid为键来并入attachelist数组,实现调用,也为新增附件初始化变量然后在提交页面检查了submit后进行附件的更新信息处理
  1. updateattach($modnewthreads, $tid, $pid, $attachlist);
复制代码
函数在function_post,可以看一下流程,就能知道这是处理提交过来的未处理附件的更新处理
整理比较乱,见谅





您需要登录后才可以回帖 登录 | 注册加入  

本版积分规则

Archiver|手机版|小黑屋|Discuz!扩展中心 ( 浙ICP备14042422号-1 )|网站地图QQ机器人

GMT+8, 2024-3-29 16:12 , Processed in 0.517884 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表