public function run() { $id = $this->getId(); $jsonEncodedExistingFiles = CJSON::encode($this->existingFiles); if ($this->allowMultipleUpload) { $sendAction = null; $addLabel = ZurmoHtml::tag('strong', array('class' => 'add-label'), Zurmo::t('Core', 'Add Files')); } else { $sendAction = "\$('#{$this->formName}').find('.files > tbody').children().remove();"; $addLabel = ZurmoHtml::tag('strong', array('class' => 'add-label'), Zurmo::t('Core', 'Add File')); } $this->registerScriptForLogoFileElement($id, $sendAction, $jsonEncodedExistingFiles); $htmlOptions = array('id' => $this->inputId); $html = '<div id="fileUpload' . $id . '">'; $html .= '<div class="fileupload-buttonbar clearfix">'; $html .= '<div class="addfileinput-button"><span>Y</span>' . $addLabel; $html .= ZurmoHtml::fileField($this->inputName, null, $htmlOptions); $html .= '</div>' . self::renderMaxSizeContent($this->maxSize, $this->showMaxSize); $html .= '</div><div class="fileupload-content"><table class="files"><tbody></tbody></table></div></div>'; $html .= $this->makeUploadRowScriptContent(); $html .= $this->makeDownloadRowScriptContent(); echo $html; }
public function run() { $id = $this->getId(); $jsonEncodedExistingFiles = CJSON::encode($this->existingFiles); if ($this->allowMultipleUpload) { $sendAction = null; $addLabel = $this->getAddLabel(); } else { $sendAction = "\$('#{$this->formName}').find('.files > tbody').children().remove();"; $addLabel = $this->getAddLabel(); } // Begin Not Coding Standard $javaScript = <<<EOD \$(function () { 'use strict'; // Initialize the jQuery File Upload widget: \$('#fileUpload{$id}').fileupload({ dataType: 'json', url: '{$this->uploadUrl}', autoUpload: true, sequentialUploads: true, maxFileSize: {$this->maxSize}, dropZone: \$('#dropzone{$id}'), uploadTemplateId: '{$this->getUploadTemplateId()}', downloadTemplateId: '{$this->getDownloadTemplateId()}', {$this->renderParamForInit('formData')} add: function (e, data) { {$this->beforeUploadAction} {$sendAction} var that = \$(this).data('fileupload'); that._adjustMaxNumberOfFiles(-data.files.length); data.isAdjusted = true; data.isValidated = that._validate(data.files); data.context = that._renderUpload(data.files) .appendTo(\$(this).find('.files')).fadeIn(function () { // Fix for IE7 and lower: \$(this).show(); \$(this).makeOrRemoveTogglableSpinner(true, '#'+'fileUpload{$id}'); }).data('data', data); if ((that.options.autoUpload || data.autoUpload) && data.isValidated) { data.jqXHR = data.submit(); } } }); // Open download dialogs via iframes, // to prevent aborting current uploads: \$('#fileUpload{$id} .files a:not([target^=_blank])').live('click', function (e) { e.preventDefault(); \$('<iframe style="display:none;"></iframe>') .prop('src', this.href) .appendTo('body'); }); \$('.fileupload-buttonbar').removeClass('ui-widget-header ui-corner-top'); \$('.fileupload-content').removeClass('ui-widget-content ui-corner-bottom'); \$('#fileUpload{$id}').bind('fileuploaddestroy', function (e, data) { {$this->afterDeleteAction} }); \$('#fileUpload{$id}').bind('fileuploadalways', function (e, data) { if (data == undefined || data.result == undefined || ((data.result[0] != undefined && data.result[0].error != undefined) || data.result.error != undefined)) { setTimeout(function () { \$('#{$this->formName}').find('.files > tbody').children(':last').fadeOut('slow', function() { \$(this).remove();}); {$this->afterDeleteAction} }, 1000); } }); \$('#fileUpload{$id}').bind('done', function (e, data) { {$this->onSuccessAction} }); //load existing files var existingFiles = {$jsonEncodedExistingFiles}; var fu = \$('#fileUpload{$id}').data('fileupload'); fu._adjustMaxNumberOfFiles(-existingFiles.length); fu._renderDownload(existingFiles) .appendTo(\$('#fileUpload{$id} .files')) .fadeIn(function () { // Fix for IE7 and lower: \$(this).show(); }); }); EOD; // End Not Coding Standard Yii::app()->getClientScript()->registerScript(__CLASS__ . '#' . $id, $javaScript); $htmlOptions = array('id' => $this->inputId); if ($this->allowMultipleUpload) { $htmlOptions['multiple'] = 'multiple'; } $html = '<div id="dropzone' . $id . '">' . $this->getDropZoneContent() . '</div>'; $html .= '<div id="fileUpload' . $id . '">'; $html .= '<div class="fileupload-buttonbar clearfix">'; $html .= '<div class="addfileinput-button"><span>Y</span>' . $addLabel; $html .= ZurmoHtml::fileField($this->inputName, null, $htmlOptions); $html .= '</div>' . self::renderMaxSizeContent($this->maxSize, $this->showMaxSize); $html .= '</div><div class="fileupload-content"><table class="files"><tbody></tbody></table></div></div>'; $html .= $this->makeUploadRowScriptContent(); $html .= $this->makeDownloadRowScriptContent(); echo $html; }