123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902 |
- <?php
- /*
- //上传单图
- //echo $form->field($model, 'avatar',['labelOptions' => ['class' => 'form-label col-md-1'],'options'=>['class'=>'row']])->widget('manks\FileInput', ['clientOptions' => ['pick' => ['multiple' => false],'uploadType'=>1,'buttonDivClass'=>'','defaultImage'=>''],'imageBlockClass'=>'col-md-1','fixStyle'=>'','helpTips'=>'<ul><li>提示</li><li>1.请上传合法合规图片</li><li>2.仅支持JPG格式</li></ul>']);
- //echo manks\FileInput::widget(['clientOptions' => ['pick' => ['multiple' => false],'uploadType'=>1,'fileNumLimit'=>1],'name'=>'cert_info[idcard_img]','imageBlockClass'=>'col-md-1','value'=>'320/362/1f48ae2059304e3e3904185febe2f34d.jpg']);
- //上传单文件
- //echo $form->field($model, 'avatar',['labelOptions' => ['class' => 'form-label col-md-1'],'options'=>['class'=>'row']])->widget('manks\FileInput', ['clientOptions' => ['pick' => ['multiple' => false],'uploadType'=>2,'buttonTxt'=>'选择文件','buttonDivClass'=>'','defaultImage'=>''],'imageBlockClass'=>'col-md-1','fixStyle'=>'']);
- //echo manks\FileInput::widget(['clientOptions' => ['pick' => ['multiple' => false],'uploadType'=>2,'buttonTxt'=>'选择文件'],'name'=>'cert_info[idcard_img]','imageBlockClass'=>'col-md-1','value'=>'']);
- //上传头像(手机端)
- //echo $form->field($model, 'avatar',['labelOptions' => ['class' => 'form-label col-md-1'],'options'=>['class'=>'row']])->widget('manks\FileInput', ['clientOptions' => ['pick' => ['multiple' => false],'uploadType'=>3,'buttonDivClass'=>'','defaultImage'=>''],'imageBlockClass'=>'col-md-1','fixStyle'=>'']);
- //echo manks\FileInput::widget(['clientOptions' => ['pick' => ['multiple' => false],'uploadType'=>3],'name'=>'cert_info[idcard_img]','imageBlockClass'=>'col-md-1','value'=>'']);
- //上传封面(手机端)
- //echo $form->field($model, 'avatar',['labelOptions' => ['class' => 'form-label col-md-1'],'options'=>['class'=>'row']])->widget('manks\FileInput', ['clientOptions' => ['pick' => ['multiple' => false],'uploadType'=>4,'buttonDivClass'=>'','defaultImage'=>''],'imageBlockClass'=>'col-md-1','fixStyle'=>'']);
- //echo manks\FileInput::widget(['clientOptions' => ['pick' => ['multiple' => false],'uploadType'=>4],'name'=>'cert_info[idcard_img]','imageBlockClass'=>'col-md-1','value'=>'']);
- //上传封面(PC)
- //echo $form->field($model, 'avatar',['labelOptions' => ['class' => 'form-label col-md-1'],'options'=>['class'=>'row']])->widget('manks\FileInput', ['clientOptions' => ['pick' => ['multiple' => false],'uploadType'=>5,'buttonDivClass'=>'','defaultImage'=>''],'imageBlockClass'=>'col-md-1','fixStyle'=>'width:400px;height:225px;line-height:225px;','helpTips'=>'<ul><li>提示</li><li>1.请上传合法合规图片</li><li>2.仅支持JPG格式</li></ul>']);
- //echo manks\FileInput::widget(['clientOptions' => ['pick' => ['multiple' => false],'uploadType'=>5],'name'=>'cert_info[idcard_img]','imageBlockClass'=>'col-md-1','value'=>'']);
- //上传多图(PC)
- //echo $form->field($model, 'avatar',['labelOptions' => ['class' => 'form-label col-md-1'],'options'=>['class'=>'row','style'=>'display:block']])->widget('manks\FileInput', ['clientOptions' => ['pick' => ['multiple' => true],'uploadType'=>1,'buttonDivClass'=>'','defaultImage'=>''],'imageBlockClass'=>'col-md-1','fixStyle'=>'','helpTips'=>'']);
- //echo manks\FileInput::widget(['clientOptions' => ['pick' => ['multiple' => true],'uploadType'=>1],'name'=>'cert_info[idcard_img]','imageBlockClass'=>'col-md-1 test','fixStyle'=>'width:200px;height:120px;','value'=>'']);
- //上传多文件(PC)
- //echo $form->field($model, 'avatar',['labelOptions' => ['class' => 'form-label col-md-1'],'options'=>['class'=>'row']])->widget('manks\FileInput', ['clientOptions' => ['pick' => ['multiple' => true],'uploadType'=>2,'buttonTxt'=>'选择文件','buttonDivClass'=>'','defaultImage'=>''],'imageBlockClass'=>'col-md-1','fixStyle'=>'']);
- //echo manks\FileInput::widget(['clientOptions' => ['pick' => ['multiple' => true],'uploadType'=>2,'buttonTxt'=>'选择文件'],'name'=>'cert_info[idcard_img]','imageBlockClass'=>'','value'=>'']);
- //上传多图(h5)
- echo $form->field($model, 'avatar',['labelOptions' => ['class' => 'form-label col-md-1'],'options'=>['class'=>'row']])->widget('manks\FileInput', ['clientOptions' => ['pick' => ['multiple' => true],'uploadType'=>8,'buttonTxt'=>'选择文件','buttonDivClass'=>'','defaultImage'=>''],'imageBlockClass'=>'col-md-1','fixStyle'=>'']);
- */
- namespace manks;
- use Yii;
- use yii\widgets\InputWidget;
- use yii\helpers\Html;
- use yii\base\InvalidConfigException;
- use yii\helpers\Url;
- use yii\helpers\Json;
- use app\modules\admin\models\Config;
- class FileInput extends InputWidget
- {
- public $clientOptions = [];//传入参数
- public $chooseButtonClass = ['class' => 'btn btn-light'];
- public $chooseFileBlockClass = 'choosefile-block';
- public $imageBlockClass='';//图片框样式
- public $imageClass='';//图片样式
- public $fixStyle='';
- public $containStyle='';
- public $delIconClass = '';//删除样式
- public $containerClass='';
- public $helpTips='';
- public $theme = '';//定义文档上传页面的风格
- private $_view;//视图对象
- private $_hashVar;//用于上传按钮Class, Modal 弹框ID ,通过一定算法生成
- private $_config;//上传组件配置
- private $_domain;//上传成功后的文件路由域名
- private $_appdomain;//应用域名
- private $_defaultImg;//传图时候显示的默认图
- private $_encOptions;//编码后的传入参数
- private $_fixImgClass;
- private $_loadingImg;//loading 图片
- private $assetsUrl;
- //下面是不传model 时候的用法
- public $name;
- public $id;
- public $value;
- public function init ()
- {
- if(empty($name))parent::init();
- $this->_domain = UPLOAD_URL;
- $this->_appdomain = APP_URL;
- $this->_view = $this->getView();
- $this->initOptions();
- $this->initConfig();
- $this->registerClientScript();
- //对图片排列样式纠正
- if(defined('IN_ADMIN')&&IN_ADMIN)//后台不能重复加载bootstrap.js
- {
- $this->_fixImgClass = $this->imageBlockClass.' fix-img';
- }
- else
- {
- $this->_fixImgClass = $this->imageBlockClass.' fix-img';
- }
- }
- public function run ()
- {
- if ($this->hasModel()) {
- $model = $this->model;
- $attribute = $this->attribute;
- }
- else
- {
- $model = null;
- $attribute = null;
- }
- // 单文件
- if (empty($this->_config['pick']['multiple'])||$this->_config['pick']['multiple']==false) {
- $html = $this->renderInput($model, $attribute);
- if($this->_config['uploadType']==1)//单图
- {
- $html .= $this->renderSingleImage($model, $attribute);
- }
- else if($this->_config['uploadType']==2)//单文件
- {
- $html .= $this->renderSingleFile($model, $attribute);
- }
- else if($this->_config['uploadType']==3)//前台上传头像(H5)
- {
- $html .= $this->renderMobileAvatar($model, $attribute);
- }
- else if($this->_config['uploadType']==4)//前台上传封面(H5)
- {
- $html .= $this->renderMobileThumb($model, $attribute);
- }
- else if($this->_config['uploadType']==5)//前台上传封面(PC)
- {
- }
- else if($this->_config['uploadType']==6)//前台上传单图(PC美化)
- {
- }
- else if($this->_config['uploadType']==88)//前台上传单文档
- {
- $html .= $this->renderSingleUpload($model, $attribute);
- }
- }else {
- $html = $this->renderMultiInput($model, $attribute);
- if($this->_config['uploadType']==1)//图
- {
- $html .= $this->renderMultiImage($model, $attribute);
- }
- else if($this->_config['uploadType']==2)//文件
- {
- $html .= $this->renderMultiFile($model, $attribute);
- }
- else if($this->_config['uploadType']==8)//H5多图
- {
- }
- else if($this->_config['uploadType']==99)//前台批量上传文档
- {
- $html .= $this->renderMultidoc();
- }
- }
- echo $html;
- }
- /**
- * init options
- */
- public function initOptions ()
- {
- // to do.
- if ($this->hasModel()){
- $id = md5($this->options['id']);//通过传入的INPUT 元素ID,生成上传选择器ID前半段
- }
- else
- {
- $id = md5($this->name);
- }
- $this->id = $id;
- $this->hashClientOptions("webupload_config_{$id}");
- }
- /**
- * register base js config
- */
- public function initConfig ()
- {
- if (empty($this->_domain)) {
- throw new InvalidConfigException("param `domain` must set.", 1);
- }
- $this->_config = $this->mergeConfig();
- $asset = FileInputAsset::register($this->_view);
- $assetsUrl = $asset->baseUrl;
- $this->assetsUrl = $assetsUrl;
- $this->_loadingImg = $assetsUrl.'/webuploader/loading.gif';
- if(!empty($this->_config['defaultImage']))
- {
- $this->_defaultImg = $this->_config['defaultImage'];
- }
- else
- {
- $this->_defaultImg = $this->assetsUrl.'/webuploader/nopic.png';
- }
- $this->_config['defaultImage'] = $this->_defaultImg;
- $config = Json::htmlEncode($this->_config);
- $js = <<<JS
- var {$this->_hashVar} = {$config};
- $('#{$this->_hashVar}').webupload_fileinput({$this->_hashVar});
- JS;
- $this->_view->registerJs($js);
- }
- /**
- * Registers the needed client script and options.
- */
- public function registerClientScript ()
- {
- }
- /**
- * generate hash var by plugin options
- */
- protected function hashClientOptions($name)
- {
- $this->_encOptions = empty($this->clientOptions) ? '' : Json::htmlEncode($this->clientOptions);//JSON编码客户端元素参数
- $this->_hashVar = $name . '_' . hash('crc32', $this->_encOptions);
- }
- /*
- **合并上传组件配置
- * buttonTxt:按钮上面显示的文字
- * buttonDivClass:按钮父级容器样式
- *
- *
- *
- */
- public function mergeConfig ()
- {
- //系统设置的上传限制
- $sysConfigInfo = Config::find()->where("name='attachment'")->one();
- $sysConfig = string2array($sysConfigInfo->value);
- //设置文件类型限制
- if(($this->clientOptions['uploadType']==2||$this->clientOptions['uploadType']==88||$this->clientOptions['uploadType']==99)&&empty($this->clientOptions['accept']))
- {
- $this->clientOptions['accept'] = [
- 'title' => 'Files',
- 'extensions' => 'gif,jpg,jpeg,bmp,png,pdf,doc,ppt,pptx,xls,xlsx,docx,rar,zip,7z,tar.gz,war,txt,ico,mp4,mp3,flv',
- 'mimeTypes' => '*',
- ];
- if(!empty($sysConfig['file_type']))
- {
- $this->clientOptions['accept']['extensions'] = str_replace('|',',',$sysConfig['file_type']);
- }
- }
- else if($this->clientOptions['uploadType']==1||$this->clientOptions['uploadType']==3||$this->clientOptions['uploadType']==4||$this->clientOptions['uploadType']==5||$this->clientOptions['uploadType']==6||$this->clientOptions['uploadType']==8)
- {
- $this->clientOptions['accept'] = [
- 'title' => 'Images',
- 'extensions' => 'gif,jpg,jpeg,bmp,png,ico',
- 'mimeTypes' => 'image/*',
- ];
- }
- //如果客户端没有传入大小限制,采用系统配置
- if(!empty($sysConfig['file_single_size_limit'])&&empty($this->clientOptions['fileSingleSizeLimit']))
- {
- $this->clientOptions['fileSingleSizeLimit'] = $sysConfig['file_single_size_limit']*1024*1024;
- }
- if(!empty($sysConfig['file_size_limit'])&&empty($this->clientOptions['fileSizeLimit']))
- {
- $this->clientOptions['fileSizeLimit'] = $sysConfig['file_size_limit']*1024*1024;
- }
- if(!empty($sysConfig['file_num_limit'])&&empty($this->clientOptions['fileNumLimit']))
- {
- $this->clientOptions['fileNumLimit'] = $sysConfig['file_num_limit'];
- }
- $config = $this->mergeArray($this->getDefaultClientOptions(), $this->clientOptions);
- //初始表单需要的csrf
- if (isset($this->clientOptions['csrf']) && $this->clientOptions['csrf'] === false) {
- } else {
- $config['formData'][Yii::$app->request->csrfParam] = Yii::$app->request->csrfToken;
- }
- $config['modal_id'] = $this->_hashVar;
- if (empty($config['server'])) {
- $config['server'] = Url::to([Yii::$app->params['webuploader']['uploadUrl']]);
- }
- if (empty($config['md5checkUrl'])) {
- $config['md5checkUrl'] = API_URL.Yii::$app->params['webuploader']['md5checkUrl'];
- }
- $config['compress'] = false;
- return $config;
- }
- /**
- * 合并数组
- */
- public function mergeArray ($oriArr, $desArr)
- {
- foreach ($oriArr as $k => $v) {
- if (array_key_exists($k, $desArr)) {
- if (is_array($v) && $v) {
- foreach ($v as $k2 => $v2) {
- if (array_key_exists($k2, $desArr[$k])&&$desArr[$k][$k2]!=null) {
- $oriArr[$k][$k2] = $desArr[$k][$k2];
- }
- }
- } else {
- if($desArr[$k]!=null)$oriArr[$k] = $desArr[$k];
- }
- }
- }
- return $oriArr;
- }
- /**
- * register default config for js
- */
- public function getDefaultClientOptions ()
- {
- return Yii::$app->params['webuploader']['baseConfig'];
- }
- /**
- * render html body-input
- */
- public function renderInput ($model=null, $attribute=null)
- {
- Html::addCssClass($this->chooseButtonClass, " {$this->_hashVar}");
- $eles = [];
- if ($this->hasModel())
- {
- $eles[] = Html::tag('div',Html::activeTextInput($model, $attribute, ['class' => 'input-'.$this->id]), ['style'=>'display:none']);
- }
- else
- {
- $eles[] ='<div style="display:none"><input type="text" class="input-'.$this->id.'" name="'.$this->name.'" value="'.$this->value.'" ></div>';
- }
- if($this->_config['uploadType']==3)
- {
- if(!empty($this->_config['defaultImage']))
- {
- $this->_defaultImg = $this->_config['defaultImage'];
- }
- else
- {
- $this->_defaultImg = $this->assetsUrl.'/webuploader/noavatar.png';
- }
- if(!empty($this->containerClass)&&$this->containerClass=='upltu')$this->_defaultImg = '';
- $this->_config['defaultImage'] = $this->_defaultImg;
- $value = $this->hasModel()?$model->$attribute:$this->value;
- $attachment = \app\modules\admin\models\Attachment::find()->where("hash='".md5($value)."'")->asArray()->one();
- $uploadId = $this->id;
- $src = $this->_defaultImg;
- if ($this->hasModel())
- {
- if (($value = $model->$attribute)) {
- $src = $this->realUrl($value);
- }
- }
- else
- {
- $src = $this->value?$this->realUrl($this->value):$this->_defaultImg;
- }
- if(!empty($this->containerClass)&&$this->containerClass=='upltu')//美化后的
- {
- $displayStr = $src==''?' display:none; ':'';
- $html = Html::tag('div', implode("\n", $eles), ['class' => '']);
- $html.='<div class="uploadertype-3 upload-box-'.$uploadId.' " >
- <div class="webuploader-container '.$this->containerClass.'"><div class="webuploader-pick" id="imgPicker_file_'.$uploadId.'"><div class=" '.$this->_fixImgClass.' img-box" style="'.$this->fixStyle.$displayStr.'" id="img_box_'.$uploadId.'"> <img src="'.$src.'" >'.Html::tag('em', '', ['class' =>$this->delIconClass.' delImage3']).'</div></div></div></div>';
- $this->insertMobileThumbJs($uploadId,$attachment);
- }
- else
- {
- $html = Html::tag('div', implode("\n", $eles), ['class' => '']);
- $html.='<div class="uploadertype-3 upload-box-'.$uploadId.' '.$this->_fixImgClass.'" style="'.$this->fixStyle.'">
- <div class="webuploader-container"><div class="webuploader-pick" id="imgPicker_file_'.$uploadId.'"> <img src="'.$src.'" class="img-thumbnail">'.Html::tag('em', 'x', ['class' => 'close delImage']).'</div></div>
- </div>';
- $this->insertMobileThumbJs($uploadId,$attachment);
- }
- return $html;
- }
- else if($this->_config['uploadType']==4||$this->_config['uploadType']==5||$this->_config['uploadType']==6)//封面图
- {
- if(!empty($this->_config['defaultImage']))
- {
- $this->_defaultImg = $this->_config['defaultImage'];
- }
- else
- {
- $this->_defaultImg = $this->assetsUrl.'/webuploader/nopic.png';
- }
- if($this->_config['uploadType']==6)$this->_defaultImg = '';
- $this->_config['defaultImage'] = $this->_defaultImg;
- $value = $this->hasModel()?$model->$attribute:$this->value;
- $attachment = \app\modules\admin\models\Attachment::find()->where("hash='".md5($value)."'")->asArray()->one();
- $uploadId = $this->id;
- //图片
- $src = $this->_defaultImg;
- if ($this->hasModel())
- {
- if (($value = $model->$attribute)) {
- $src = $this->realUrl($value);
- }
- }
- else
- {
- $src = $this->value?$this->realUrl($this->value):$this->_defaultImg;
- }
- if($this->helpTips)
- {
- $helptips = Html::tag('div', $this->helpTips, ['class' =>"helptips"]);
- }
- if($this->_config['uploadType']==6)
- {
- $html = Html::tag('div', implode("\n", $eles), ['class' => '']);
- $buttonStr = Html::button('',array_merge($this->chooseButtonClass));
- $displayStr = $src==''?' display:none; ':'';
- $html.='<div class="uploadertype-'.$this->_config['uploadType'].' upload-box-'.$uploadId.'">
- <div class="webuploader-container '.$this->containerClass.'" style="'.$this->containStyle.'">
- <div class="'.$this->_config['buttonDivClass'].'" id="imgPicker_file_'.$uploadId.'">'.$buttonStr.'</div>
- <div class=" '.$this->_fixImgClass.' img-box" style="'.$this->fixStyle.$displayStr.'" id="img_box_'.$uploadId.'">
- <img class="'.$this->imageClass.'" src="'.$src.'" >
- <em class="'.$this->delIconClass.' delImage6" title="删除"></em>
- </div>
- </div>
- </div>';
- }
- else
- {
- $html = Html::tag('div', implode("\n", $eles), ['class' => '']);
- $html.='<div class="uploadertype-'.$this->_config['uploadType'].' upload-box-'.$uploadId.' " >
- <div class="webuploader-bigcontainer"><div class="img-box '.$this->_fixImgClass.'" style="'.$this->fixStyle.'" ><img src="'.$src.'" class="img-thumbnail" ></div><div id="imgPicker_file_'.$uploadId.'" style="'.$this->containStyle.'">'.Html::button($this->_config['buttonTxt']?$this->_config['buttonTxt']:'选择图片', $this->chooseButtonClass).'</div>'.$helptips.'</div>
- </div>';
- }
- if($this->_config['uploadType']==5||$this->_config['uploadType']==6)
- {
- $this->insertPcPicJs($uploadId,$attachment);
- }
- else
- {
- $this->insertMobileThumbJs($uploadId,$attachment);
- }
- return $html;
- }
- else if($this->_config['uploadType']==88)
- {
- $value = $this->hasModel()?$model->$attribute:$this->value;
- $attachment = \app\modules\admin\models\Attachment::find()->where("hash='".md5($value)."'")->asArray()->one();
- $uploadId = $this->id;
- $html = Html::tag('div', implode("\n", $eles), ['class' => '']);
- $html.='<div class="upload_center upload-box-'.$uploadId.'" style="width:100%">
- <div class="webuploader-container">
- <div class="webuploader-pick" id="imgPicker_file_'.$uploadId.'" >
- <div class="upload_tip flexaround">
- <p class="upload_tbt"><i class="iconfont icon-shangchuan2"></i><span class="uploadtip_txt">点击上传文件</span></p>
- </div>
- </div>
- </div>
- <p class="upload_status_txt" style=" position: absolute;right: 10px;top: 10px;"></p>
- <div class="progress-bar1" style="width:99%">
- <div class="baring"><span class="rings" style="width:0%;"><span class="text ringstxt"></span></span></div>
- </div>
- </div>';
- $this->insertDocJs($uploadId,$attachment);
- return $html;
- }
- else
- {
- $eles[] = Html::tag('div', Html::button($this->_config['buttonTxt']?$this->_config['buttonTxt']:'选择图片', $this->chooseButtonClass), ['class' => $this->_config['buttonDivClass']?$this->_config['buttonDivClass'].' button-block-'.$this->_config['uploadType']:'button-block button-block-'.$this->_config['uploadType']]);
- return Html::tag('div', implode("\n", $eles), ['class' => $this->chooseFileBlockClass?$this->chooseFileBlockClass:'choosefile-block']);
- }
- }
- /**
- * render html body-input-multi
- */
- public function renderMultiInput ($model=null, $attribute=null)
- {
- Html::addCssClass($this->chooseButtonClass, " {$this->_hashVar}");
- $eles = [];
- //$eles[] = Html::tag('div',Html::textInput($attribute, null, ['class' => 'layui-input', 'readonly' => 'readonly']), ['class' => 'layui-input-inline']);
- $inputName = $this->hasModel()?Html::getInputName($model, $attribute):$this->name;
- $eles[] = Html::hiddenInput($inputName, null);
- if($this->_config['uploadType']==8)//H5多图
- {
- $imgstr = '';
- $value = $this->hasModel()?$model->$attribute:$this->value;
- if(!empty($value))
- {
- $files = explode(",",$value);
- if(is_array($files))foreach($files as $k=>$file)
- {
- $imgstr .= '<div><img src="'.$this->realUrl($file).'" ><input type="hidden" name="'.$inputName.'[]" value="'.$file.'"><em class="close img-delete'.$k.'" title="删除" onclick="$()">x</em></div>';
- $attachments[] = \app\modules\admin\models\Attachment::find()->where("hash = '".md5($file)."'")->asArray()->one();
- }
- }
- $html = Html::tag('div', implode("\n", $eles), ['class' => '']);
- $uploadId = $this->id;
- $html.='<div class="uploadertype-'.$this->_config['uploadType'].' upload-box-'.$uploadId.' '.$this->_fixImgClass.'" style="'.$this->fixStyle.'">
- <div id="imgPicker_file_'.$uploadId.'">'.Html::button($this->_config['buttonTxt']?$this->_config['buttonTxt']:'选择图片', $this->chooseButtonClass).'</div><div class="webuploader-container"><div class="img-box">'.$imgstr.'</div></div>
- </div>';
- $this->insertMobilePicJs($inputName,$uploadId,$attachments);
- return $html;
- }
- //上传多个文档
- else if($this->_config['uploadType']==99)
- {
- $uploadId = $this->id;
- $fileTypeList = explode(",",$this->_config['accept']['extensions']);
- $fileTypes = [];
- if(is_array($fileTypeList))foreach($fileTypeList as $fileext){
- $fileTypes[]= $fileext;
- }
- $limitStr = $this->_config['formData']['init_limit_day']?'今日还可上传<b id="restnum">'.$this->_config['formData']['upload_limit_day'].'</b>个,':'';
- $html = '';
- $html.='<div class="multiupload-box upload-box-'.$uploadId.'" style="width:100%">
- <div class="upload-block multiupload-picker" id="imgPicker_file_'.$uploadId.'" >
- <div class="upload_tip flexaround">
- <p class="upload_tbt">
- <i class="iconfont icon-shangchuan2"></i>
- <span class="uploadtip_txt">点击上传文件</span>
- </p>
- <div class="tdes">
- <p>按住Ctrl可选中多个同时上传;一次最多能添加'.$this->_config['fileNumLimit'].'个</p>
- <p>'.$limitStr.'单个文件不超过<b>'.($this->_config['fileSingleSizeLimit']/(1024*1024)).'</b>MB</p></p>
- <p>支持拓展名:'.join(" ",$fileTypes).'等</p>
- </div>
- </div>
- </div>
- <div class="progress-bar1" style="width:99%">
- <div class="baring">
- <span class="rings" style="width:0%;"><span class="text ringstxt"></span></span>
- </div>
- </div>
- </div>';
- $this->insertMultiDocJs($uploadId);
- return $html;
- }
- else
- {
- $eles[] = Html::tag('div', Html::button($this->_config['buttonTxt']?$this->_config['buttonTxt']:'选择图片', $this->chooseButtonClass), ['class' => $this->_config['buttonDivClass']?$this->_config['buttonDivClass']:'button-block']);
- return Html::tag('div', implode("\n", $eles), ['class' =>$this->chooseFileBlockClass?$this->chooseFileBlockClass:'choosefile-block']);
- }
- }
- /**
- * render html body-image
- */
- public function renderSingleImage ($model=null, $attribute=null)
- {
- if(!empty($this->_config['defaultImage']))
- {
- $this->_defaultImg = $this->_config['defaultImage'];
- }
- else
- {
- $this->_defaultImg = $this->assetsUrl.'/webuploader/nopic.png';
- }
- $src = $this->_defaultImg;
- $eles = [];
- if ($this->hasModel())
- {
- if (($value = $model->$attribute)) {
- $src = $this->realUrl($value);
- }
- }
- else
- {
- $src = $this->value?$this->realUrl($this->value):$this->_defaultImg;
- }
- $eles[] = Html::img($src, ['class' => 'img-thumbnail']);
- $eles[] = Html::tag('em', 'x', ['class' => 'close delImage']);
- if(!empty($this->helpTips))
- {
- $eles[] = Html::tag('div', $this->helpTips, ['class' =>"helptips"]);
- }
- return Html::tag('div', implode("\n", $eles), ['class' =>"uploadertype-".$this->_config['uploadType']." ".$this->_fixImgClass,'style'=>$this->fixStyle]);
- }
- /**
- * render html body-image
- */
- public function renderSingleFile ($model=null, $attribute=null)
- {
- if ($this->hasModel())
- {
- $relValue = $model->$attribute;
- $value = $this->realUrl($relValue);
- }
- else
- {
- $relValue = $this->value;
- $value = $this->realUrl($this->value);
- }
- $eles = [];
- if($value)
- {
- $attachment = \app\modules\admin\models\Attachment::find()->where("hash='".md5($relValue)."'")->asArray()->one();
- $eles[] = Html::tag('div',"<a href='".$value."' target='_blank'>".$attachment?$attachment['file_name']:basename($value)."</a>", ['class' => 'uploader-unit-file-name']);
- $eles[] = Html::tag('em', 'x', ['class' => 'close delMultiFile', 'title' => '删除']);
- }
- return Html::tag('div', '<div class=\'uploader-file-item\'>'.implode("\n", $eles).'</div>', ['class' => 'uploader-file-list uploadertype-'.$this->_config['uploadType'].' '.$this->_fixImgClass,'style'=>$this->fixStyle]);
- }
- public function renderMobileAvatar ($model=null, $attribute=null)
- {
- if ($this->hasModel())
- {
- $value = $model->$attribute;
- $value = $this->realUrl($value);
- }
- else
- {
- $value = $this->realUrl($this->value);
- }
- if($value)
- {
- }
- return '';
- }
- /**
- * render html body-image
- */
- public function renderMobileThumb ($model=null, $attribute=null)
- {
- if ($this->hasModel())
- {
- $value = $model->$attribute;
- $value = $this->realUrl($value);
- }
- else
- {
- $value = $this->realUrl($this->value);
- }
- if($value)
- {
- }
- return '';
- }
- /**
- * render html body-image
- */
- public function renderSingleUpload($model=null, $attribute=null)
- {
- if ($this->hasModel())
- {
- $value = $model->$attribute;
- $value = $this->realUrl($value);
- }
- else
- {
- $value = $this->realUrl($this->value);
- }
- return '';
- }
- public function renderMultidoc($model=null, $attribute=null)
- {
- return '';
- }
- /**
- * render html body-image-muitl
- */
- public function renderMultiImage ($model=null, $attribute=null)
- {
- /**
- * @var $srcTmp like this: src1,src2...srcxxx
- */
- $srcTmp = $this->hasModel()?$model->$attribute:$this->value;
- $items = [];
- if ($srcTmp) {
- is_string($srcTmp) && $srcTmp = explode(Yii::$app->params['webuploader']['delimiter'], $srcTmp);
- $inputName = $this->hasModel()?Html::getInputName($model, $attribute):$this->name;
- foreach ($srcTmp as $k => $v) {
- $dv = $this->realUrl($v);
- $src = $v ? $dv : $this->_defaultImg;
- $eles = [];
- $eles[] = Html::img($src, ['class' => 'img-responsive img-thumbnail cus-img']);
- $eles[] = Html::hiddenInput($inputName . "[]", $v);
- $eles[] = Html::tag('em', 'x', ['class' => 'close delMultiImage', 'title' => '删除']);
- $items[] = Html::tag('div', implode("\n", $eles), ['class' => 'multi-item']);
- }
- }
- return Html::tag('div', implode("\n", $items), ['class' => 'uploadertype-'.$this->_config['uploadType'].' multi-img-details'.' '. $this->_fixImgClass]);
- }
- /**
- * render html body-image-muitl
- */
- public function renderMobMultiImage ($model=null, $attribute=null)
- {
- /**
- * @var $srcTmp like this: src1,src2...srcxxx
- */
- $srcTmp = $this->hasModel()?$model->$attribute:$this->value;
- $items = [];
- if ($srcTmp) {
- is_string($srcTmp) && $srcTmp = explode(Yii::$app->params['webuploader']['delimiter'], $srcTmp);
- $inputName = $this->hasModel()?Html::getInputName($model, $attribute):$this->name;
- foreach ($srcTmp as $k => $v) {
- $dv = $this->realUrl($v);
- $src = $v ? $dv : $this->_defaultImg;
- $eles = [];
- $eles[] = Html::img($src, ['class' => 'img-responsive img-thumbnail cus-img']);
- $eles[] = Html::hiddenInput($inputName . "[]", $v);
- $eles[] = Html::tag('em', 'x', ['class' => 'close delMultiImage', 'title' => '删除']);
- $items[] = Html::tag('div', implode("\n", $eles), ['class' => 'multi-item']);
- }
- }
- return Html::tag('div', implode("\n", $items), ['class' => 'input-group multi-img-details'.' '. $this->_fixImgClass]);
- }
- /**
- * render html body-image-muitl
- */
- public function renderMultiFile ($model=null, $attribute=null)
- {
- /**
- * @var $srcTmp like this: src1,src2...srcxxx
- */
- $srcTmp = $this->hasModel()?$model->$attribute:$this->value;
- $items = [];
- if ($srcTmp) {
- is_string($srcTmp) && $srcTmp = explode(Yii::$app->params['webuploader']['delimiter'], $srcTmp);
- $inputName = $this->hasModel()?Html::getInputName($model, $attribute):$this->name;
- foreach ($srcTmp as $k => $v) {
- $dv = $this->realUrl($v);
- $attachment = \app\modules\admin\models\Attachment::find()->where("hash='".md5($v)."'")->asArray()->one();
- $eles = [];
- $eles[] = Html::tag('div',"<a href='".$v."' target='_blank'>".$attachment?$attachment['file_name']:basename($v)."</a>", ['class' => 'uploader-unit-file-name']);
- $eles[] = Html::hiddenInput($inputName . "[]", $v);
- $eles[] = Html::tag('em', 'x', ['class' => 'close delMultiFile', 'title' => '删除']);
- $items[] = Html::tag('div', implode("\n", $eles), ['class' => 'uploader-file-item']);
- }
- }
- return Html::tag('div', implode("\n", $items), ['class' => 'uploadertype-'.$this->_config['uploadType'].' uploader-file-list'.' '. $this->_fixImgClass,'style'=>$this->fixStyle]);
- }
- //封面图
- public function insertMobileThumbJs($uploadId,$attachment=null)
- {
- $config = Json::htmlEncode($this->_config);
- if(!empty($attachment['file_path'])){
- $attachment['file_path'] = $this->realUrl($attachment['file_path']);
- }
- else
- {
- $attachment = null;
- }
- $attachment = Json::htmlEncode($attachment);
- $js = <<<JS
- $(function(){
- var loadimg = '{$this->_loadingImg}';
- var config_{$uploadId} = {$config};
- var existfile_{$uploadId} = {$attachment};
- //console.log(existfile_{$uploadId})
- var uploader_{$uploadId} = WebUploader.create({
- // 选完文件后,是否自动上传。
- threads:1,
- auto: true,
- timeout: 0,
- // swf文件路径
- swf: './webuploader/Uploader.swf',
- // 文件接收服务端。
- server: config_{$uploadId}.server,
- pick: {
- id: '#imgPicker_file_{$uploadId}',
- multiple: config_{$uploadId}.pick.multiple
- },
- formData: config_{$uploadId}.formData,
- disableGlobalDnd: config_{$uploadId}.disableGlobalDnd,
- chunked: config_{$uploadId}.chunked,
- fileNumLimit: config_{$uploadId}.pick.multiple ? config_{$uploadId}.fileNumLimit : 1,
- fileSizeLimit: config_{$uploadId}.fileSizeLimit,
- fileSingleSizeLimit: config_{$uploadId}.fileSingleSizeLimit,
- accept: {
- title: config_{$uploadId}.accept.title,
- extensions: config_{$uploadId}.accept.extensions,
- mimeTypes: config_{$uploadId}.accept.mimeTypes
- }
- });
- // 当有文件添加进来的时候
- uploader_{$uploadId}.on( 'fileQueued', function( file ) {
- if(file.attachment_id>0){
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- return;
- }
- $(".upload-box-{$uploadId} img").attr('src',loadimg);
- uploader_{$uploadId}.upload();
- });
- //上传出错
- uploader_{$uploadId}.on('uploadError', function (file, reason) {
- layer_mobile.open({content: "文件[" + file.name + "]上传失败,原因:" + reason,time: 2});
- });
- uploader_{$uploadId}.on( 'error', function( code ) {
- var msg = code;
- switch (code) {
- case 'Q_EXCEED_NUM_LIMIT':
- msg = '添加的文件数量超出 fileNumLimit 的设置';
- break;
- case 'Q_EXCEED_SIZE_LIMIT':
- msg = '添加的文件总大小超出了 fileSizeLimit 的设置';
- break;
- case 'Q_TYPE_DENIED':
- msg = '添加的文件类型错误';
- break;
- case 'Q_TYPE_DENIED':
- msg = '添加的文件类型错误';
- break;
- case 'F_EXCEED_SIZE':
- msg = '文件超出大小限制';
- break;
- }
- layer_mobile.open({content: msg,skin: 'msg',time: 2 });
- });
- // 文件上传成功,给item添加成功class, 用样式标记上传成功。
- uploader_{$uploadId}.on( 'uploadSuccess', function( file,response ) {
- if(response.code==1)
- {
- uploader_{$uploadId}.removeFile( file );
- $(".input-{$uploadId}").val('');
- $('#'+file.id).remove();
- layer_mobile.open({content: response.msg,skin: 'msg',time: 2 });
- return;
- }
- if(response.attachment=='')
- {
- uploader_{$uploadId}.removeFile( file );
- $(".input-{$uploadId}").val('');
- $('#'+file.id).remove();
- layer_mobile.open({content:'上传出错,请联系管理员',skin: 'msg',time: 2 });
- return;
- }
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- $(".input-{$uploadId}").val(response.attachment);
- $(".upload-box-{$uploadId} img").attr('src',response.url);
- if($("#img_box_{$uploadId}").length>0)$("#img_box_{$uploadId}").show();
- });
- // 完成上传完了,成功或者失败,先删除进度条。
- uploader_{$uploadId}.on( 'uploadComplete', function( file ) {
- });
- //初始化已经存在的文件
- uploader_{$uploadId}.on( 'ready', function( ) {
- if(existfile_{$uploadId}==null)return;
- getFileObject(existfile_{$uploadId}.file_path, function (fileObject) {
- var wuFile = new WebUploader.Lib.File(WebUploader.guid('rt_'),fileObject);
- var file = new WebUploader.File(wuFile);
- file.name = existfile_{$uploadId}.file_name;
- file.attachment_id = existfile_{$uploadId}.a_id;
- file.file_path = existfile_{$uploadId}.file_path;
- uploader_{$uploadId}.options.auto = false;
- uploader_{$uploadId}.addFile(file);
- existfile_{$uploadId} = null;
- //初始状态
- $('.upload-box-{$uploadId} .doc-delete').on('click', function(){
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- $(".input-{$uploadId}").val('');
- })
- })
- })
- })
- //下面是编辑图片时候用到
- var getFileBlob = function (url, cb) {
- var xhr = new XMLHttpRequest();
- xhr.open("GET", url);
- xhr.responseType = "blob";
- xhr.addEventListener('load', function() {
- cb(xhr.response);
- });
- xhr.send();
- };
- var blobToFile = function (blob, name) {
- blob.lastModifiedDate = new Date();
- blob.name = name;
- return blob;
- };
- var getFileObject = function(filePathOrUrl, cb) {
- getFileBlob(filePathOrUrl, function (blob) {
- cb(blobToFile(blob, filePathOrUrl));
- });
- };
- JS;
- $this->_view->registerJs($js);
- }
- //多图(移动端)
- public function insertMobilePicJs($inputName,$uploadId,$attachments=null)
- {
- $config = Json::htmlEncode($this->_config);
- if(!empty($attachments))
- {
- for($i=0;$i<count($attachments);$i++)
- {
- if(!empty($attachments[$i]['file_path'])){
- $attachments[$i]['file_path'] = $this->realUrl($attachments[$i]['file_path']);
- }
- }
- }
- else
- {
- $attachments = null;
- }
- ;
- $attachments = Json::htmlEncode($attachments);
- $js = <<<JS
- $(function(){
- var loading = null;
- var config_{$uploadId} = {$config};
- var existfile_{$uploadId} = {$attachments};
- //console.log(existfile_{$uploadId})
- var uploader_{$uploadId} = WebUploader.create({
- // 选完文件后,是否自动上传。
- threads:1,
- auto: true,
- timeout: 0,
- // swf文件路径
- swf: './webuploader/Uploader.swf',
- // 文件接收服务端。
- server: config_{$uploadId}.server,
- pick: {
- id: '#imgPicker_file_{$uploadId}',
- multiple: config_{$uploadId}.pick.multiple
- },
- formData: config_{$uploadId}.formData,
- disableGlobalDnd: config_{$uploadId}.disableGlobalDnd,
- chunked: config_{$uploadId}.chunked,
- fileNumLimit: config_{$uploadId}.pick.multiple ? config_{$uploadId}.fileNumLimit : 1,
- fileSizeLimit: config_{$uploadId}.fileSizeLimit,
- fileSingleSizeLimit: config_{$uploadId}.fileSingleSizeLimit,
- accept: {
- title: config_{$uploadId}.accept.title,
- extensions: config_{$uploadId}.accept.extensions,
- mimeTypes: config_{$uploadId}.accept.mimeTypes
- }
- });
- // 当有文件添加进来的时候
- uploader_{$uploadId}.on( 'fileQueued', function( file ) {
- if(file.attachment_id>0){
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- return;
- }
- loading = layer_mobile.open({type: 2,time:2,content: '上传中...'});
- uploader_{$uploadId}.upload();
- });
- //上传出错
- uploader_{$uploadId}.on('uploadError', function (file, reason) {
- layer_mobile.open({
- content: "文件[" + file.name + "]上传失败,原因:" + reason
- ,time: 2
- });
- });
- uploader_{$uploadId}.on( 'error', function( code ) {
- var msg = code;
- switch (code) {
- case 'Q_EXCEED_NUM_LIMIT':
- msg = '添加的文件数量超出 fileNumLimit 的设置';
- break;
- case 'Q_EXCEED_SIZE_LIMIT':
- msg = '添加的文件总大小超出了 fileSizeLimit 的设置';
- break;
- case 'Q_TYPE_DENIED':
- msg = '添加的文件类型错误';
- break;
- case 'Q_TYPE_DENIED':
- msg = '添加的文件类型错误';
- break;
- case 'F_EXCEED_SIZE':
- msg = '文件超出大小限制';
- break;
- }
- layer_mobile.open({content: msg,skin: 'msg',time: 2 });
- });
- // 文件上传成功,给item添加成功class, 用样式标记上传成功。
- uploader_{$uploadId}.on( 'uploadSuccess', function( file,response ) {
- layer_mobile.close(loading);
- if(response.code==1)
- {
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- layer_mobile.open({content: response.msg,skin: 'msg',time: 2 });
- return;
- }
- if(response.attachment=='')
- {
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- layer_mobile.open({content: '上传出错,请联系管理员',skin: 'msg',time: 2 });
- return;
- }
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- $(".upload-box-{$uploadId} .img-box").append("<div><img src='"+response.url+"'><input type='hidden' name='{$inputName}[]' value='"+response.attachment+"'><em class='close' title='删除' onclick='$(this).parent().remove();'>x</em></div>");
- });
- // 完成上传完了,成功或者失败,先删除进度条。
- uploader_{$uploadId}.on( 'uploadComplete', function( file ) {
- });
- //初始化已经存在的文件
- uploader_{$uploadId}.on( 'ready', function( ) {
- if(existfile_{$uploadId}==null||existfile_{$uploadId}[0]==null)return;
- var k=0;
- for(var i=0;i<existfile_{$uploadId}.length;i++)
- {
- var tempObj = existfile_{$uploadId}[i];
- getFileObject(tempObj.file_path, function (fileObject) {
- var wuFile = new WebUploader.Lib.File(WebUploader.guid('rt_'),fileObject);
- var file = new WebUploader.File(wuFile);
- file.name = tempObj.file_name;
- file.attachment_id = tempObj.a_id;
- file.file_path = tempObj.file_path;
- uploader_{$uploadId}.options.auto = true;
- uploader_{$uploadId}.addFile(file);
- //初始状态
- $('.upload-box-{$uploadId} .img-delete'+k).on('click', function(){
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- $(this).parent().remove();
- })
- k++;
- })
- }
- })
- })
- //下面是编辑图片时候用到
- var getFileBlob = function (url, cb) {
- var xhr = new XMLHttpRequest();
- xhr.open("GET", url);
- xhr.responseType = "blob";
- xhr.addEventListener('load', function() {
- cb(xhr.response);
- });
- xhr.send();
- };
- var blobToFile = function (blob, name) {
- blob.lastModifiedDate = new Date();
- blob.name = name;
- return blob;
- };
- var getFileObject = function(filePathOrUrl, cb) {
- getFileBlob(filePathOrUrl, function (blob) {
- cb(blobToFile(blob, filePathOrUrl));
- });
- };
- JS;
- $this->_view->registerJs($js);
- }
- //单张大图(PC端)
- public function insertPcPicJs($uploadId,$attachment=null)
- {
- $config = Json::htmlEncode($this->_config);
- if(!empty($attachment['file_path'])){
- $attachment['file_path'] = $this->realUrl($attachment['file_path']);
- }
- else
- {
- $attachment = null;
- }
- $attachment = Json::htmlEncode($attachment);
- $js = <<<JS
- $(function(){
- var loadimg = '{$this->_loadingImg}';
- var config_{$uploadId} = {$config};
- var existfile_{$uploadId} = {$attachment};
- //console.log(existfile_{$uploadId})
- var uploader_{$uploadId} = WebUploader.create({
- // 选完文件后,是否自动上传。
- threads:1,
- auto: true,
- timeout: 0,
- // swf文件路径
- swf: './webuploader/Uploader.swf',
- // 文件接收服务端。
- server: config_{$uploadId}.server,
- pick: {
- id: '#imgPicker_file_{$uploadId}',
- multiple: config_{$uploadId}.pick.multiple
- },
- formData: config_{$uploadId}.formData,
- disableGlobalDnd: config_{$uploadId}.disableGlobalDnd,
- chunked: config_{$uploadId}.chunked,
- fileNumLimit: config_{$uploadId}.pick.multiple ? config_{$uploadId}.fileNumLimit : 1,
- fileSizeLimit: config_{$uploadId}.fileSizeLimit,
- fileSingleSizeLimit: config_{$uploadId}.fileSingleSizeLimit,
- accept: {
- title: config_{$uploadId}.accept.title,
- extensions: config_{$uploadId}.accept.extensions,
- mimeTypes: config_{$uploadId}.accept.mimeTypes
- }
- });
- // 当有文件添加进来的时候
- uploader_{$uploadId}.on( 'fileQueued', function( file ) {
- if(file.attachment_id>0){
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- return;
- }
- $(".upload-box-{$uploadId} img").attr('src',loadimg);
- $(".upload-box-{$uploadId} img").parent().addClass('loading').show();
- uploader_{$uploadId}.upload();
- });
- //上传出错
- uploader_{$uploadId}.on('uploadError', function (file, reason) {
- layer.msg("文件[" + file.name + "]上传失败,原因:" + reason,{time: 3000});
- });
- uploader_{$uploadId}.on( 'error', function( code ) {
- var msg = code;
- switch (code) {
- case 'Q_EXCEED_NUM_LIMIT':
- msg = '添加的文件数量超出 fileNumLimit 的设置';
- break;
- case 'Q_EXCEED_SIZE_LIMIT':
- msg = '添加的文件总大小超出了 fileSizeLimit 的设置';
- break;
- case 'Q_TYPE_DENIED':
- msg = '添加的文件类型错误';
- break;
- case 'Q_TYPE_DENIED':
- msg = '添加的文件类型错误';
- break;
- case 'F_EXCEED_SIZE':
- msg = '文件超出大小限制';
- break;
- }
- layer.msg(msg,{time: 2000});
- });
- // 文件上传成功,给item添加成功class, 用样式标记上传成功。
- uploader_{$uploadId}.on( 'uploadSuccess', function( file,response ) {
- if(response.code==1)
- {
- uploader_{$uploadId}.removeFile( file );
- $(".input-{$uploadId}").val('');
- $('#'+file.id).remove();
- layer.msg(response.msg,{time: 2000});
- return;
- }
- if(response.attachment=='')
- {
- uploader_{$uploadId}.removeFile( file );
- $(".input-{$uploadId}").val('');
- $('#'+file.id).remove();
- layer.msg('上传出错,请联系管理员',{time: 2000});
- return;
- }
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- $(".input-{$uploadId}").val(response.attachment);
- $(".upload-box-{$uploadId} img").attr('src',response.url);
- if($("#img_box_{$uploadId}").length>0)$("#img_box_{$uploadId}").show();
- $(".upload-box-{$uploadId} img").parent().removeClass('loading');
- });
- // 完成上传完了,成功或者失败,先删除进度条。
- uploader_{$uploadId}.on( 'uploadComplete', function( file ) {
- });
- //初始化已经存在的文件
- uploader_{$uploadId}.on( 'ready', function( ) {
- if(existfile_{$uploadId}==null)return;
- getFileObject(existfile_{$uploadId}.file_path, function (fileObject) {
- var wuFile = new WebUploader.Lib.File(WebUploader.guid('rt_'),fileObject);
- var file = new WebUploader.File(wuFile);
- file.name = existfile_{$uploadId}.file_name;
- file.attachment_id = existfile_{$uploadId}.a_id;
- file.file_path = existfile_{$uploadId}.file_path;
- uploader_{$uploadId}.options.auto = false;
- uploader_{$uploadId}.addFile(file);
- existfile_{$uploadId} = null;
- //初始状态
- $('.upload-box-{$uploadId} .doc-delete').on('click', function(){
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- $(".input-{$uploadId}").val('');
- })
- })
- })
- })
- //下面是编辑图片时候用到
- var getFileBlob = function (url, cb) {
- var xhr = new XMLHttpRequest();
- xhr.open("GET", url);
- xhr.responseType = "blob";
- xhr.addEventListener('load', function() {
- cb(xhr.response);
- });
- xhr.send();
- };
- var blobToFile = function (blob, name) {
- blob.lastModifiedDate = new Date();
- blob.name = name;
- return blob;
- };
- var getFileObject = function(filePathOrUrl, cb) {
- getFileBlob(filePathOrUrl, function (blob) {
- cb(blobToFile(blob, filePathOrUrl));
- });
- };
- JS;
- $this->_view->registerJs($js);
- }
- //单个文档上传
- public function insertDocJs($uploadId,$attachment=null)
- {
- $config = Json::htmlEncode($this->_config);
- if(!empty($attachment['file_path'])){
- $attachment['file_path'] = $this->realUrl($attachment['file_path']);
- }
- else
- {
- $attachment = null;
- }
- $attachment = Json::htmlEncode($attachment);
- $js = <<<JS
- $(function(){
- var config_{$uploadId} = {$config};
- var existfile_{$uploadId} = {$attachment};
- //console.log(existfile_{$uploadId})
- var uploader_{$uploadId} = WebUploader.create({
- // 选完文件后,是否自动上传。
- threads:1,
- auto: false,
- timeout: 0,
- // swf文件路径
- swf: './webuploader/Uploader.swf',
- // 文件接收服务端。
- server: config_{$uploadId}.server,
- pick: {
- id: '#imgPicker_file_{$uploadId}',
- multiple: config_{$uploadId}.pick.multiple
- },
- formData: config_{$uploadId}.formData,
- disableGlobalDnd: config_{$uploadId}.disableGlobalDnd,
- chunked: config_{$uploadId}.chunked,
- fileNumLimit: config_{$uploadId}.pick.multiple ? config_{$uploadId}.fileNumLimit : 1,
- fileSizeLimit: config_{$uploadId}.fileSizeLimit,
- fileSingleSizeLimit: config_{$uploadId}.fileSingleSizeLimit,
- accept: {
- title: config_{$uploadId}.accept.title,
- extensions: config_{$uploadId}.accept.extensions,
- mimeTypes: config_{$uploadId}.accept.mimeTypes
- }
- });
- uploader_{$uploadId}.on( 'beforeFileQueued', function( file ) {
- if(uploader_{$uploadId}.options.formData.upload_limit_day<=0&&uploader_{$uploadId}.options.formData.init_limit_day>0){
- uploader_{$uploadId}.removeFile(file, true);
- message('你已经达到今天上传数量上限,请明天再来!');
- return false;
- }
- });
- // 当有文件添加进队列
- uploader_{$uploadId}.on( 'fileQueued', function( file ) {
- if(existfile_{$uploadId}!=null)return;
- var title = file.name.replace("."+file.ext,"");
- this.md5File(file).then(function (md5) {
- $.get(config_{$uploadId}.md5checkUrl+"?md5=" + md5+"&title="+title, function (data) {
- if (data.error == 0) {
- file.md5 = md5;
- file.title = title;
- uploader_{$uploadId}.upload();
- } else if (data.error == 1||data.error == 2) {
- layer.confirm(data.msg, {
- btn: ['知道了'] //按钮
- }, function(index){
- uploader_{$uploadId}.removeFile(file, true);
- layer.close(index);
- }, function(index){
- uploader_{$uploadId}.removeFile(file, true);
- layer.close(index);
- });
- }
- });
- });
- });
- uploader_{$uploadId}.on('uploadProgress', function (file, percent) {
- percent = parseInt(percent);
- $(".upload-box-{$uploadId} .rings").css({'width':percent * 100 + '%'});
- $(".upload-box-{$uploadId} .ringstxt").text(percent * 100 + '%');
- $(".upload-box-{$uploadId} .uploadtip_txt").text('上传中(' + parseInt(percent * 100) + '%' + ")");
- });
- uploader_{$uploadId}.on('uploadError', function (file, reason) {
- layer.confirm("文件[" + file.name + "]上传失败,原因:" + reason, {
- btn: ['确定'] //按钮
- }, function(){
- uploader_{$uploadId}.removeFile(file, true);
- });
- });
- uploader_{$uploadId}.on( 'error', function( code ) {
- var msg = code;
- switch (code) {
- case 'Q_EXCEED_NUM_LIMIT':
- msg = '添加的文件数量超出 fileNumLimit 的设置';
- break;
- case 'Q_EXCEED_SIZE_LIMIT':
- msg = '添加的文件总大小超出了 fileSizeLimit 的设置';
- break;
- case 'Q_TYPE_DENIED':
- msg = '添加的文件类型错误';
- break;
- case 'Q_TYPE_DENIED':
- msg = '添加的文件类型错误';
- break;
- case 'F_EXCEED_SIZE':
- msg = '文件超出大小限制';
- break;
- }
- message(msg);
- });
- uploader_{$uploadId}.on( 'uploadSuccess', function( file,response ) {
- if(response.code==1)
- {
- $(".upload-box-{$uploadId} .rings").css({'width':'0%'});
- $(".upload-box-{$uploadId} .ringstxt").text('');
- $(".upload-box-{$uploadId} .uploadtip_txt").html("点击上传文件");
- $(".upload-box-{$uploadId} .upload_status_txt").html('');
- uploader_{$uploadId}.removeFile( file );
- $(".input-{$uploadId}").val('');
- $('#'+file.id).remove();
- message(response.msg);
- return;
- }
- else
- {
- $(".upload-box-{$uploadId} .upload_status_txt").html("<i class='mdi mdi-refresh doc-delete' style='color:#999;font-size:20px;cursor:pointer' title='重置'></i>");
- $('.upload-box-{$uploadId} .doc-delete').on('click', function(){
- $(".upload-box-{$uploadId} .rings").css({'width':'0%'});
- $(".upload-box-{$uploadId} .ringstxt").text('');
- $(".upload-box-{$uploadId} .uploadtip_txt").html("点击上传文件");
- $(".upload-box-{$uploadId} .upload_status_txt").html('');
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- $(".input-{$uploadId}").val('');
- })
- if(response.attachment=='')
- {
- $(".upload-box-{$uploadId} .rings").css({'width':'0%'});
- $(".upload-box-{$uploadId} .ringstxt").text('');
- $(".upload-box-{$uploadId} .uploadtip_txt").html("点击上传文件");
- $(".upload-box-{$uploadId} .upload_status_txt").html('');
- uploader_{$uploadId}.removeFile( file );
- $(".input-{$uploadId}").val('');
- $('#'+file.id).remove();
- message('上传出错,请联系管理员');
- return;
- }
- else
- {
- $(".upload-box-{$uploadId} .uploadtip_txt").html("已上传");
- $(".input-{$uploadId}").val(response.attachment);
- if(file.ext=='zip'||file.ext=='rar')
- {
- $('#thumbbox').show();
- $('#editorbox').show();
- $('#maininfo').removeClass('col-md-12').addClass('col-md-8');
- }
- else if(file.ext=='mp4'||file.ext=='flv'||file.ext=='wmv'||file.ext=='mp3')
- {
- $('#thumbbox').show();
- $('#editorbox').hide();
- $('#maininfo').removeClass('col-md-12').addClass('col-md-8');
- }
- else
- {
- $('#thumbbox').hide();
- $('#editorbox').hide();
- $('#maininfo').removeClass('col-md-8').addClass('col-md-12');
- }
- $('#doc-md5').val(file.md5);
- $('#doc-ext').val(file.ext);
- $('#doc-filesize').val(file.size);
- $('#doc-title').val(file.title);
- if($('#auto_get_tags').length>0){ $('#auto_get_tags').click();}
- }
- }
- });
- // 完成上传完了,成功或者失败,先删除进度条。
- uploader_{$uploadId}.on( 'uploadComplete', function( file ) {
- });
- //初始化已经存在的文件
- uploader_{$uploadId}.on( 'ready', function( ) {
- if(existfile_{$uploadId}==null)return;
- getFileObject(existfile_{$uploadId}.file_path, function (fileObject) {
- var wuFile = new WebUploader.Lib.File(WebUploader.guid('rt_'),fileObject);
- var file = new WebUploader.File(wuFile);
- file.name = existfile_{$uploadId}.file_name;
- file.attachment_id = existfile_{$uploadId}.a_id;
- uploader_{$uploadId}.options.auto = false;
- uploader_{$uploadId}.addFile(file);
- existfile_{$uploadId} = null;
- //初始状态
- $(".upload-box-{$uploadId} .rings").css({'width':100 + '%'});
- $(".upload-box-{$uploadId} .ringstxt").text( 100 + '%');
- $(".upload-box-{$uploadId} .uploadtip_txt").text('已上传');
- $(".upload-box-{$uploadId} .upload_status_txt").html("<i class='mdi mdi-refresh doc-delete' style='color:#999;font-size:20px;cursor:pointer' title='重置'></i>");
- $('.upload-box-{$uploadId} .doc-delete').on('click', function(){
- $(".upload-box-{$uploadId} .rings").css({'width':'0%'});
- $(".upload-box-{$uploadId} .ringstxt").text('');
- $(".upload-box-{$uploadId} .uploadtip_txt").html("点击上传文件");
- $(".upload-box-{$uploadId} .upload_status_txt").html('');
- uploader_{$uploadId}.removeFile( file );
- $('#'+file.id).remove();
- $(".input-{$uploadId}").val('');
- })
- })
- })
- })
- //下面是编辑图片时候用到
- var getFileBlob = function (url, cb) {
- var xhr = new XMLHttpRequest();
- xhr.open("GET", url);
- xhr.responseType = "blob";
- xhr.addEventListener('load', function() {
- cb(xhr.response);
- });
- xhr.send();
- };
- var blobToFile = function (blob, name) {
- blob.lastModifiedDate = new Date();
- blob.name = name;
- return blob;
- };
- var getFileObject = function(filePathOrUrl, cb) {
- getFileBlob(filePathOrUrl, function (blob) {
- cb(blobToFile(blob, filePathOrUrl));
- });
- };
- JS;
- $this->_view->registerJs($js);
- }
- //文档批量上传
- public function insertMultiDocJs($uploadId)
- {
- $config = Json::htmlEncode($this->_config);
- $js = <<<JS
- $(function(){
- var config_{$uploadId} = {$config};
- var uploader_{$uploadId} = WebUploader.create({
- // 选完文件后,是否自动上传。
- threads:1,
- auto: false,
- timeout: 0,
- swf: './webuploader/Uploader.swf',
- server: config_{$uploadId}.server,
- pick: {
- id: '#imgPicker_file_{$uploadId}',
- multiple: config_{$uploadId}.pick.multiple
- },
- formData: config_{$uploadId}.formData,
- disableGlobalDnd: config_{$uploadId}.disableGlobalDnd,
- chunked: config_{$uploadId}.chunked,
- fileNumLimit: config_{$uploadId}.pick.multiple ? config_{$uploadId}.fileNumLimit : 1,
- fileSizeLimit: config_{$uploadId}.fileSizeLimit,
- fileSingleSizeLimit: config_{$uploadId}.fileSingleSizeLimit,
- accept: {
- title: config_{$uploadId}.accept.title,
- extensions: config_{$uploadId}.accept.extensions,
- mimeTypes: config_{$uploadId}.accept.mimeTypes
- }
- });
- // 文件进入队列之前
- uploader_{$uploadId}.on( 'beforeFileQueued', function( file ) {
- if($('#cat_id').val()==''||$('#cat_id').val()==0){
- message('请选择栏目');
- uploader_{$uploadId}.removeFile(file, true);
- return false;
- }
- if($('#doc-coin_price').val()==''){
- message('请设置售价');
- uploader_{$uploadId}.removeFile(file, true);
- return false;
- }
- if(($('#doc-ext_type_1').length>0&&$('#doc-ext_type_1').val()=='')||($('#doc-ext_type_2').length>0&&$('#doc-ext_type_2').val()=='')||($('#doc-ext_type_3').length>0&&$('#doc-ext_type_3').val()=='')||($('#doc-ext_type_4').length>0&&$('#doc-ext_type_4').val()=='')||($('#doc-ext_type_5').length>0&&$('#doc-ext_type_5').val()==''))
- {
- message('请完善栏目扩展属性');
- return false;
- }
- if(uploader_{$uploadId}.options.formData.upload_limit_day<=0&&uploader_{$uploadId}.options.formData.init_limit_day>0){
- uploader_{$uploadId}.removeFile(file, true);
- message('你已经达到今天上传数量上限,请明天再来!');
- return false;
- }
- file.cat_id = $('#cat_id').val();
- file.cat_name = $('#cat_tit').text();
- file.coin_price = $('#doc-coin_price').val();
- file.title = file.name.replace("."+file.ext,"");
- file.iconfont = 'icon-'+file.ext;
- if(file.ext=='doc'||file.ext=='docx')
- {
- file.iconfont = 'icon-file-doc-fill';
- }
- if(file.ext=='ppt'||file.ext=='pptx')
- {
- file.iconfont = 'icon-file-ppt-fill';
- }
- if(file.ext=='xls'||file.ext=='xlsx')
- {
- file.iconfont = 'icon-file-excel-fill';
- }
- if(file.ext=='zip'||file.ext=='rar')
- {
- file.iconfont = 'icon-wenjian_yasuobao';
- }
- if(file.ext=='pdf')
- {
- file.iconfont = 'icon-file-pdf-fill';
- }
- if($('#doc-ext_type_1').val()!=''&&$('#doc-ext_type_1').length>0){
- file.ext_type_1 = $('#doc-ext_type_1').val();
- }
- if($('#doc-ext_type_2').val()!=''&&$('#doc-ext_type_2').length>0){
- file.ext_type_2 = $('#doc-ext_type_2').val();
- }
- if($('#doc-ext_type_3').val()!=''&&$('#doc-ext_type_3').length>0){
- file.ext_type_3 = $('#doc-ext_type_3').val();
- }
- if($('#doc-ext_type_4').val()!=''&&$('#doc-ext_type_4').length>0){
- file.ext_type_4 = $('#doc-ext_type_4').val();
- }
- if($('#doc-ext_type_5').val()!=''&&$('#doc-ext_type_5').length>0){
- file.ext_type_5 = $('#doc-ext_type_5').val();
- }
- });
- // 文件添加进队列
- uploader_{$uploadId}.on( 'fileQueued', function( file ) {
- this.md5File(file).then(function (md5) {
- file.md5 = md5;
- $.get(config_{$uploadId}.md5checkUrl+"?md5=" + md5 +"&title="+file.title, function (data) {
- if (data.error == 0) {
- var html = '<li id="li_'+file.id+'"><div class="format"><i class="iconfont '+file.iconfont+'"></i></div>';
- html += '<div class="title"><div class="control"><input type="text" value="'+file.title+'"><span>.'+file.ext+'</span></div></div>';
- html += '<div class="status"><i class="iconfont icon-select-s"></i></div>';
- html += '<div class="cat"><span>'+file.cat_name+'</span></div>';
- html += '<div class="price"><span>'+uploader_{$uploadId}.options.formData.coin_name+':</span><input type="text" value="'+file.coin_price+'"></div>';
- html += '<div class="size"><span>'+formatBytes(file.size)+'</span></div>';
- html += '<div class="operate"><a class="delitem" href="javascript:;" data-fileid="'+file.id+'">移除</a></div></li>';
- $(".waitlist").append(html);
- $('#waitnum').text($('.waitlist li').length);
- //从队列删除文件
- $(document).on("click", ".delitem", function(){
- var files = uploader_{$uploadId}.getFiles();
- for(var i in files)
- {
- if(files[i].id==$(this).data('fileid')){
- uploader_{$uploadId}.removeFile(files[i], true);
- }
- }
- $(this).parent().parent().remove();
- resetStatus();
- })
- uploader_{$uploadId}.upload(file);
- } else if (data.error == 1) {//不可上传
- var errorHtml = '<li id="li_'+file.id+'"><div class="format"><i class="iconfont '+file.iconfont+'"></i></div>';
- errorHtml += '<div class="title"><div class="control"><input type="text" value="'+file.title+'"><span>.'+file.ext+'</span></div></div>';
- errorHtml += '<div class="status"><i class="iconfont icon-close-s"></i></div>';
- errorHtml += '<div class="cat"><span>'+file.cat_name+'</span></div>';
- errorHtml += '<div class="price"><span>'+uploader_{$uploadId}.options.formData.coin_name+':</span><input type="text" value="'+file.coin_price+'"></div>';
- errorHtml += '<div class="size"><span>'+formatBytes(file.size)+'</span></div>';
- errorHtml += '<div class="operate"><a class="moveitem" href="javascript:;">移除</a><p class="reason">'+data.msg+'</p></div></li>';
- $(".errorlist").append(errorHtml);
- $('#errornum').text($('.errorlist li').length);
- uploader_{$uploadId}.removeFile(file, true);
- //从队列删除文件
- $(document).on("click", ".moveitem", function(){
- $(this).parent().parent().remove();
- resetStatus();
- })
- }
- else if(data.error==2){//修改标题后可以传
- var edithtml = '<li id="li_'+file.id+'"><div class="format"><i class="iconfont '+file.iconfont+'"></i></div>';
- edithtml += '<div class="title"><div class="control"><input readonly="yes" class="doctit" type="text" value="'+file.title+'"><span>.'+file.ext+'</span></div></div>';
- edithtml += '<div class="status"><span>待修改</span> | <span data-lock="1" class="goonupload" data-fileid="'+file.id+'" style="cursor:pointer">继续上传</span></div>';
- edithtml += '<div class="cat"><span>'+file.cat_name+'</span></div>';
- edithtml += '<div class="price"><span>'+uploader_{$uploadId}.options.formData.coin_name+':</span><input type="text" value="'+file.coin_price+'" class="docprice"></div>';
- edithtml += '<div class="size"><span>'+formatBytes(file.size)+'</span></div>';
- edithtml += '<div class="operate"><a class="edit" data-title="'+file.title+'" data-fileid="'+file.id+'" data-catname="'+file.cat_name+'">编辑</a><a class="delitem" href="javascript:;" data-fileid="'+file.id+'">移除</a><p class="reason">'+data.msg+'</p></div></li>';
- $(".editlist").append(edithtml);
- //从队列删除文件
- $(document).on("click", ".delitem", function(){
- var files = uploader_{$uploadId}.getFiles();
- for(var i in files)
- {
- if(files[i].id==$(this).data('fileid')) {uploader_{$uploadId}.removeFile(files[i], true)};
- }
- $(this).parent().parent().remove();
- resetStatus();
- })
- $(document).on("click", ".goonupload", function(){
- if($(this).data('lock')==1)
- {
- message('请修改标题后上传');
- return;
- }
- var title = $("#li_"+$(this).data('fileid')+" .doctit").val();
- var files = uploader_{$uploadId}.getFiles();
- for(var i in files)
- {
- if(files[i].id==$(this).data('fileid')) {
- files[i].title = title;
- uploader_{$uploadId}.upload(files[i]);
- }
- }
- })
- }
- resetStatus();
- });
- });
- });
- uploader_{$uploadId}.on('uploadProgress', function (file, percent) {
- percent = parseInt(percent);
- $(".upload-box-{$uploadId} .rings").css({'width':percent * 100 + '%'});
- $(".upload-box-{$uploadId} .ringstxt").text(percent * 100 + '%');
- });
- uploader_{$uploadId}.on('uploadError', function (file, reason) {
- layer.confirm("文件[" + file.name + "]上传失败,原因:" + reason, {
- btn: ['确定'] //按钮
- }, function(){
- });
- });
- uploader_{$uploadId}.on( 'error', function( code ) {
- var msg = code;
- switch (code) {
- case 'Q_EXCEED_NUM_LIMIT':
- msg = '队列中的文件数量超出上限';
- break;
- case 'Q_EXCEED_SIZE_LIMIT':
- msg = '队列中的文件总大小超出上限';
- break;
- case 'Q_TYPE_DENIED':
- msg = '添加的文件类型错误';
- break;
- case 'Q_TYPE_DENIED':
- msg = '添加的文件类型错误';
- break;
- case 'F_EXCEED_SIZE':
- msg = '文件超出大小限制';
- break;
- }
- message(msg);
- });
- // 文件上传成功,给item添加成功class, 用样式标记上传成功。
- uploader_{$uploadId}.on( 'uploadSuccess', function( file,response ) {
- $('#waitnum').text($('.waitlist li').length);
- if(response.code==1)
- {
- var html = '<li><div class="format"><i class="iconfont '+file.iconfont+'"></i></div>';
- html += '<div class="title"><div class="control"><input type="text" value="'+file.title+'"><span>.'+file.ext+'</span></div></div>';
- html += '<div class="status"><i class="iconfont icon-close-s"></i></div>';
- html += '<div class="cat"><span>'+file.cat_name+'</span></div>';
- html += '<div class="price"><span>'+uploader_{$uploadId}.options.formData.coin_name+':</span><input type="text" value="'+file.coin_price+'"></div>';
- html += '<div class="size"><span>'+formatBytes(file.size)+'</span></div>';
- html += '<div class="operate"><a href="javascript:;" onclick="$(this).parent().parent().remove();resetStatus();" >移除</a><p class="reason">'+response.msg+'</p></div></li>';
- $(".faillist").append(html);
- uploader_{$uploadId}.removeFile( file );
- $('#li_'+file.id).remove();
- resetStatus();
- $(".upload-box-{$uploadId} .rings").css({'width':'0%'});
- $(".upload-box-{$uploadId} .ringstxt").text('');
- return;
- }
- else
- {
- if(response.attachment=='')
- {
- var html = '<li><div class="format"><i class="iconfont '+file.iconfont+'"></i></div>';
- html += '<div class="title"><div class="control"><input type="text" value="'+file.title+'"><span>.'+file.ext+'</span></div></div>';
- html += '<div class="status"><i class="iconfont icon-close-s"></i></div>';
- html += '<div class="cat"><span>'+file.cat_name+'</span></div>';
- html += '<div class="price"><span>'+uploader_{$uploadId}.options.formData.coin_name+':</span><input type="text" value="'+file.coin_price+'"></div>';
- html += '<div class="size"><span>'+formatBytes(file.size)+'</span></div>';
- html += '<div class="operate"><a class="removeFailItem" href="javascript:;" >移除</a><p class="reason">上传出错,请联系管理员</p></div></li>';
- $(".faillist").append(html);
- $('#failnum').text($('.faillist li').length);
- uploader_{$uploadId}.removeFile( file );
- $('#li_'+file.id).remove();
- //从队列删除文件
- $(document).on("click", ".removeFailItem", function(){
- $(this).parent().parent().remove();
- resetStatus();
- $(".upload-box-{$uploadId} .rings").css({'width':'0%'});
- $(".upload-box-{$uploadId} .ringstxt").text('');
- })
- return;
- }
- else
- {
- if(uploader_{$uploadId}.options.formData.upload_limit_day<=0&&uploader_{$uploadId}.options.formData.init_limit_day>0){
- var files = uploader_{$uploadId}.getFiles();
- for(var i in files)
- {
- uploader_{$uploadId}.cancelFile(files[i]);
- }
- $(".upload-box-{$uploadId} .rings").css({'width':'0%'});
- $(".upload-box-{$uploadId} .ringstxt").text('');
- message('你已经达到今天上传数量上限,请明天再来!');
- return false;
- }
- //var loading = commonLoading();
- var postData = {'Doc[title]':file.title,'Doc[md5]':file.md5,'Doc[ext]':file.ext,'Doc[filesize]':file.size,'cat_id':file.cat_id,'Doc[ext_type_1]':file.ext_type_1,'Doc[ext_type_2]':file.ext_type_2,'Doc[ext_type_3]':file.ext_type_3,'Doc[ext_type_4]':file.ext_type_4,'Doc[ext_type_5]':file.ext_type_5,'DocData[file]':response.attachment,'Doc[coin_price]':file.coin_price}
- $.ajax({
- type: "POST",
- async : false,
- url:api_url+"upload/multi",
- data:$.extend(postData, {request_from:request_from}),
- headers: {'Authorization': 'Bearer '+access_token},
- success: function (res) {
- //layer.close(loading);
- if(res.error==0)
- {
- if(uploader_{$uploadId}.options.formData.upload_limit_day>0)
- {
- uploader_{$uploadId}.options.formData.upload_limit_day = uploader_{$uploadId}.options.formData.upload_limit_day-1;
- $('#restnum,#bottomnum').text(uploader_{$uploadId}.options.formData.upload_limit_day);
- }
- var html = '<li id="sucli_'+file.id+'"><div class="format"><i class="iconfont '+file.iconfont+'"></i></div>';
- html += '<div class="title"><div class="control"><input type="text" value="'+file.title+'"><span>.'+file.ext+'</span></div></div>';
- html += '<div class="status"><i class="iconfont icon-select-s"></i></div>';
- html += '<div class="cat"><span>'+file.cat_name+'</span></div>';
- html += '<div class="price"><span>'+uploader_{$uploadId}.options.formData.coin_name+':</span><input type="text" value="'+file.coin_price+'"></div>';
- html += '<div class="size"><span>'+formatBytes(file.size)+'</span></div>';
- html += '<div class="operate"><a class="removeSucItem" href="javascript:;" onclick="" >移除</a><a href="'+uploader_{$uploadId}.options.formData.manageUrl+'">管理文档</a></div></li>';
- $(".suclist").append(html);
- uploader_{$uploadId}.removeFile( file );
- $('#li_'+file.id).remove();
- //从队列删除文件
- $(document).on("click", ".removeSucItem", function(){
- $(this).parent().parent().remove();
- $('#sucnum').text($('.suclist li').length);
- resetStatus();
- })
- resetStatus();
- $(".upload-box-{$uploadId} .rings").css({'width':'0%'});
- $(".upload-box-{$uploadId} .ringstxt").text('');
- }
- else
- {
- uploader_{$uploadId}.removeFile( file );
- $('#sucli_'+file.id).remove();
- resetStatus();
- $(".upload-box-{$uploadId} .rings").css({'width':'0%'});
- $(".upload-box-{$uploadId} .ringstxt").text('');
- message(res.msg);
- }
- }
- });
- }
- }
- $('#waitnum').text($('.waitlist li').length);
- });
- // 完成上传完了,成功或者失败,先删除进度条。
- uploader_{$uploadId}.on( 'uploadComplete', function( file ) {
- $(".batchupload-tab li").eq(1).click();
- $(".upload-box-{$uploadId} .rings").css({'width':'0%'});
- $(".upload-box-{$uploadId} .ringstxt").text('');
- resetStatus();
- });
- //初始化已经存在的文件
- uploader_{$uploadId}.on( 'ready', function( ) {
- uploader_{$uploadId}.addButton({id: '#continueupload'});
- })
- })
- var formatBytes = function (bytes,decimals) {
- if(bytes == 0) return '0 Bytes';
- var k = 1024,
- dm = decimals <= 0 ? 0 : decimals || 2,
- sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
- i = Math.floor(Math.log(bytes) / Math.log(k));
- return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
- }
- var resetStatus = function()
- {
- if($('.waitlist li').length>0){ $('.waitlist').siblings('.empty').hide(); }
- if($('.waitlist li').length==0){ $('.waitlist').siblings('.empty').show();}
- if($('.suclist li').length>0){ $('.suclist').siblings('.empty').hide(); }
- if($('.suclist li').length==0){ $('.suclist').siblings('.empty').show();}
- if($('.faillist li').length>0){ $('.faillist').siblings('.empty').hide(); }
- if($('.faillist li').length==0){ $('.faillist').siblings('.empty').show();}
- if($('.editlist li').length>0){ $('.editlist').siblings('.empty').hide(); }
- if($('.editlist li').length==0){ $('.editlist').siblings('.empty').show();}
- if($('.errorlist li').length>0){ $('.errorlist').siblings('.empty').hide(); }
- if($('.errorlist li').length==0){ $('.errorlist').siblings('.empty').show();}
- $('#sucnum').text($('.suclist li').length);
- $('#editnum').text($('.editlist li').length);
- $('#failnum').text($('.faillist li').length);
- $('#waitnum').text($('.waitlist li').length);
- $('#errornum').text($('.errorlist li').length);
- }
- JS;
- $this->_view->registerJs($js);
- }
- /**
- * validate `$value` is url
- */
- private function _validateUrl ($value)
- {
- $pattern = '/^{schemes}:\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])/i';
- $validSchemes = ['http', 'https'];
- $pattern = str_replace('{schemes}', '(' . implode('|', $validSchemes) . ')', $pattern);
- if (!preg_match($pattern, $value)) {
- return false;
- }
- return true;
- }
- //获取文件绝对URL
- function realUrl($url)
- {
- if(empty($url))return '';
- if($this->_validateUrl($url))
- {
- return $url;
- }
- else
- {
- $url = getFileUrl($url);
- return $url;
- }
- }
- }
|