首先,在模版中要加入调用按钮- <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[siteurl]}misc.php?mod=swfupload&action=swfupload&operation=upload&fid=120",
- post_params: {"uid" : "$_G[uid]", "hash":"$swfconfig[hash]"},
- file_size_limit : "$swfconfig[max]",
- file_types : "$swfconfig[attachexts][ext]",
- file_types_description : "$swfconfig[attachexts][depict]",
- 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的
作为发帖页面,一般会常规性引入:- 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,可以看一下流程,就能知道这是处理提交过来的未处理附件的更新处理
整理比较乱,见谅
来自:http://www.kuozhan.net/thread-22537-1-1.html
|