From e9de848e2670a8524dd12ed9445a5c9df2c86af3 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Wed, 4 Jul 2012 17:41:05 -0400 Subject: made file updated uploading work in WMD as well --- askbot/skins/common/media/js/editor.js | 13 ++++---- .../skins/common/media/js/jquery.ajaxfileupload.js | 37 ++++++++-------------- .../plugins/askbot_attachment/editor_plugin.js | 1 + askbot/skins/common/media/js/utils.js | 12 ++++--- askbot/skins/common/media/js/wmd/wmd.js | 20 ++++++++---- 5 files changed, 44 insertions(+), 39 deletions(-) diff --git a/askbot/skins/common/media/js/editor.js b/askbot/skins/common/media/js/editor.js index 209934d9..c6f1c873 100644 --- a/askbot/skins/common/media/js/editor.js +++ b/askbot/skins/common/media/js/editor.js @@ -23,7 +23,7 @@ Ajax upload function ajaxFileUpload(options) { var spinner = options['spinner']; - var uploadInput = $(options['uploadInput']); + var uploadInputId = options['uploadInputId']; var urlInput = $(options['urlInput']); var startUploadHandler = options['startUploadHandler']; @@ -33,18 +33,19 @@ function ajaxFileUpload(options) { $(this).hide(); }); - uploadInput.ajaxStart(function(){ + /* important!!! upload input must be loaded by id + * because ajaxFileUpload monkey-patches the upload form */ + $('#' + uploadInputId).ajaxStart(function(){ $(this).hide(); }).ajaxComplete(function(){ $(this).show(); }); //var localFilePath = upload_input.val(); - $.ajaxFileUpload({ url: askbot['urls']['upload'], secureuri: false, - fileElementId: uploadInput.attr('id'), + fileElementId: uploadInputId, dataType: 'xml', success: function (data, status) { @@ -65,14 +66,14 @@ function ajaxFileUpload(options) { * will remove the handler to prevent double uploading * this hack is a manipulation around the * ajaxFileUpload jQuery plugin. */ - uploadInput.unbind('change').change(startUploadHandler); + $('#' + uploadInputId).unbind('change').change(startUploadHandler); }, error: function (data, status, e) { alert(e); if (startUploadHandler){ /* re-install this as the upload extension * will remove the handler to prevent double uploading */ - uploadInput.unbind('change').change(startUploadHandler); + $('#' + uploadInputId).unbind('change').change(startUploadHandler); } } }); diff --git a/askbot/skins/common/media/js/jquery.ajaxfileupload.js b/askbot/skins/common/media/js/jquery.ajaxfileupload.js index 75292776..23759c2e 100644 --- a/askbot/skins/common/media/js/jquery.ajaxfileupload.js +++ b/askbot/skins/common/media/js/jquery.ajaxfileupload.js @@ -23,8 +23,7 @@ jQuery.extend({ document.body.appendChild(io); return io; }, - createUploadForm: function(id, fileElementId) - { + createUploadForm: function(id, fileElementId) { //create form var formId = 'jUploadForm' + id; var fileId = 'jUploadFile' + id; @@ -62,8 +61,7 @@ jQuery.extend({ if ( s.global ) jQuery.event.trigger("ajaxSend", [xml, s]); // Wait for a response to come back - var uploadCallback = function(isTimeout) - { + var uploadCallback = function(isTimeout) { var io = document.getElementById(frameId); try { if(io.contentWindow){ @@ -81,12 +79,10 @@ jQuery.extend({ io.contentDocument.document.XMLDocument : io.contentDocument.document; } } - catch(e) - { + catch(e) { jQuery.handleError(s, xml, null, e); } - if ( xml || isTimeout == "timeout") - { + if ( xml || isTimeout == "timeout") { requestDone = true; var status; try { @@ -125,16 +121,15 @@ jQuery.extend({ jQuery(io).unbind(); - setTimeout(function() - { try - { + setTimeout(function() { + try { $(io).remove(); $(form).remove(); - } catch(e) { - jQuery.handleError(s, xml, null, e); - } - }, 100) + } catch(e) { + jQuery.handleError(s, xml, null, e); + } + }, 100); xml = null; } } @@ -145,25 +140,21 @@ jQuery.extend({ if( !requestDone ) uploadCallback( "timeout" ); }, s.timeout); } - try - { + try { // var io = $('#' + frameId); var form = $('#' + formId); $(form).attr('action', s.url); $(form).attr('method', 'POST'); $(form).attr('target', frameId); - if(form.encoding) - { + if(form.encoding) { form.encoding = 'multipart/form-data'; } - else - { + else { form.enctype = 'multipart/form-data'; } $(form).submit(); - } catch(e) - { + } catch(e) { jQuery.handleError(s, xml, null, e); } if(window.attachEvent){ diff --git a/askbot/skins/common/media/js/tinymce/plugins/askbot_attachment/editor_plugin.js b/askbot/skins/common/media/js/tinymce/plugins/askbot_attachment/editor_plugin.js index b1d9a918..341904b5 100644 --- a/askbot/skins/common/media/js/tinymce/plugins/askbot_attachment/editor_plugin.js +++ b/askbot/skins/common/media/js/tinymce/plugins/askbot_attachment/editor_plugin.js @@ -27,6 +27,7 @@ var dialog = new FileUploadDialog(); dialog.setHeadingText(modalMenuHeadline); dialog.setPostUploadHandler(insertIntoDom); + debugger; dialog.setInputId('askbot_attachment_input'); dialog.setUrlInputTooltip(gettext('Or paste file url here')); $(document).append(dialog.getElement()); diff --git a/askbot/skins/common/media/js/utils.js b/askbot/skins/common/media/js/utils.js index 64d232fa..6d8c345f 100644 --- a/askbot/skins/common/media/js/utils.js +++ b/askbot/skins/common/media/js/utils.js @@ -704,6 +704,10 @@ FileUploadDialog.prototype.setInputId = function(id) { this._input_id = id; }; +FileUploadDialog.prototype.getInputId = function() { + return this._input_id; +}; + FileUploadDialog.prototype.setUrlInputTooltip = function(text) { this._url_input_tooltip = text; }; @@ -741,13 +745,13 @@ FileUploadDialog.prototype.getStartUploadHandler = function(){ * which is removed by the ajaxFileUpload jQuery extension */ var spinner = this._spinner; - var upload_input = this._upload_input; - var url_input = this._url_input; + var uploadInputId = this.getInputId(); + var urlInput = this._url_input; var handler = function() { var options = { 'spinner': spinner, - 'uploadInput': upload_input, - 'urlInput': url_input.getElement(), + 'uploadInputId': uploadInputId, + 'urlInput': urlInput.getElement(), 'startUploadHandler': handler//pass in itself }; return ajaxFileUpload(options); diff --git a/askbot/skins/common/media/js/wmd/wmd.js b/askbot/skins/common/media/js/wmd/wmd.js index 3ecf02e1..60d6d868 100644 --- a/askbot/skins/common/media/js/wmd/wmd.js +++ b/askbot/skins/common/media/js/wmd/wmd.js @@ -357,6 +357,11 @@ util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){ upload_input.attr('id', 'file-upload'); upload_input.attr('size', 26); + var spinner = $(''); + spinner.attr('id', 'loading'); + spinner.attr('src', mediaUrl("media/images/indicator.gif")); + spinner.css('display', 'none'); + var startUploadHandler = function(){ localUploadFileName = $(this).val();//this is a local var /* @@ -364,7 +369,14 @@ util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){ * in order to re-install the onchange handler * because the jquery extension ajaxFileUpload removes the handler */ - return ajaxFileUpload($('#image-url'), startUploadHandler); + var options = { + spinner: spinner, + uploadInputId: 'file-upload', + urlInput: $(input), + startUploadHandler: startUploadHandler + }; + return ajaxFileUpload(options); + //$('#image-url'), startUploadHandler); }; upload_input.change(startUploadHandler); @@ -372,12 +384,8 @@ util.prompt = function(text, defaultInputText, makeLinkMarkdown, dialogType){ upload_container.append(upload_input); upload_container.append($('
')); - var spinner = $(''); - spinner.attr('id', 'loading'); - spinner.attr('src', mediaUrl("media/images/indicator.gif")); - spinner.css('display', 'none'); - upload_container.append(spinner); + upload_container.css('padding', '5px'); $(form).append(upload_container); } -- cgit v1.2.3-1-g7c22