Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
    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;
    }