引用DZ自带上传的方法总结(绑定帖子法)
首先,在模版中要加入调用按钮<div id="check_bar" class="bar"><!--{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>');}-->
<!--{subtemplate common/seditor}-->
</div>
<div class="area">
<textarea rows="5" cols="80" name="message" id="fastpostmessage" tabindex="4" class="pt" style="height:300px;" required="required"></textarea>
</div>
</div>以上代码中,定义了SEDITOR对应fastpost为id前缀的textarea文本框,然后在常用标签之外,加入了上传按钮位置,也就是<span class="pipe z">|</span>之后的那部分。之后需要用一段JS来初始化变量<script type="text/javascript">
var editorid = '';
var ATTACHNUM = {'imageused':0,'imageunused':0,'attachused':0,'attachunused':0}, ATTACHUNUSEDAID = new Array(), IMGUNUSEDAID = new Array();
</script>模版中最后的工作如下:
<div class="fieldset flash" id="attachlist"></div>
<!--{subtemplate common/upload}-->
<script type="text/javascript">
var postminchars = parseInt('$_G['setting']['minpostsize']');
var postmaxchars = parseInt('$_G['setting']['maxpostsize']');
var disablepostctrl = parseInt('{$_G['group']['disablepostctrl']}');
var fid = parseInt(120);
var upload = new SWFUpload({
upload_url: "{$_G}misc.php?mod=swfupload&action=swfupload&operation=upload&fid=120",
post_params: {"uid" : "$_G", "hash":"$swfconfig"},
file_size_limit : "$swfconfig",
file_types : "$swfconfig",
file_types_description : "$swfconfig",
file_upload_limit : $swfconfig['limit'],
file_queue_limit : 0,
swfupload_preload_handler : preLoad,
swfupload_load_failed_handler : loadFailed,
file_dialog_start_handler : fileDialogStart,
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_start_handler : uploadStart,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
button_image_url : "{IMGDIR}/uploadbutton_small.png",
button_placeholder_id : "spanButtonPlaceholder",
button_width: 17,
button_height: 25,
button_cursor:SWFUpload.CURSOR.HAND,
button_window_mode: "transparent",
custom_settings : {
progressTarget : "attachlist",
uploadSource: 'forum',
uploadType: 'attach',
fid: 120,
<!--{if $swfconfig['maxsizeperday']}-->
maxSizePerDay: $swfconfig['maxsizeperday'],
<!--{/if}-->
<!--{if $swfconfig['maxattachnum']}-->
maxAttachNum: $swfconfig['maxattachnum'],
<!--{/if}-->
uploadFrom: 'fastpost'
},
debug: false
});
</script>
</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页面
作为发帖页面,一般会常规性引入: require_once libfile('function/forum');
require_once libfile('function/forumlist');
require_once libfile('function/discuzcode');
require_once libfile('function/post');
loadforum(120);
$forum = $_G['forum'];本例中引入了forumlist是因为模拟版块来实现DX3的模块化发帖初始$forum变量 //加载未使用附件
$attachlist = getattach(0);
$attachs = $attachlist['attachs'];
$imgattachs = $attachlist['imgattachs'];
unset($attachlist);
!isset($attachs['unused']) && $attachs['unused'] = array();
!isset($imgattachs['unused']) && $imgattachs['unused'] = array();
foreach($attachs['unused'] as $value){
$attachlist[$value['aid']] = $value;
}
foreach($imgattachs['unused'] as $value){
$attachlist[$value['aid']] = $value;
}此段代码用于加载未使用的附件和图片,然后把附件以及图片用aid为键来并入attachelist数组,实现调用,也为新增附件初始化变量然后在提交页面检查了submit后进行附件的更新信息处理updateattach($modnewthreads, $tid, $pid, $attachlist);函数在function_post,可以看一下流程,就能知道这是处理提交过来的未处理附件的更新处理
整理比较乱,见谅
页:
[1]