Skip to content
This repository has been archived by the owner on Nov 27, 2022. It is now read-only.

Commit

Permalink
change drag and drop UI refs #1335
Browse files Browse the repository at this point in the history
  • Loading branch information
shimomura1004 committed Oct 13, 2012
1 parent ce73c20 commit d50ae00
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 60 deletions.
82 changes: 26 additions & 56 deletions app/assets/javascripts/jquery-dropUploader.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,54 +2,10 @@
* jQuery Plugin for HTML5 File API.
*/
(function($, document, undefined){
/**
* add event handler for File API.
* @params {function} options.onDragstart function fired on dragstart (default: yes)
* @params {function} options.onProgress function fired on progress (default: yes)
* @params {function} options.onComplete function fired on complete
* @params {function} options.onMouseover function fired on mouseover (default: yes)
* @params {function} options.onMouseout function fired on mouseout (default: yes)
* @params {function} options.onError function fired on error
* @params {String} options.action action name in posting formdata (default: empty)
* @params {String} options.fieldName file field name in posting formdata (default: file)
* @params {String} options.mimetypeFieldName mime field name in posting formdata (default: mimetype)
* @params {Hash} options.params other parameters in posting formdata
* @return TODO
*/
$.fn.dropUploader = function(options){
var self = this;
var options = options;

/**
* _onDragstart
* @param {Object} elm
*/
var _onDragstart = function(elm){
if(typeof options['onDragstart'] === 'function'){
options['onDragstart']();
}
else{
$(elm).css({
"border" : "5px dotted #cccccc"
});
}
}

/**
* _onMouseout
* @param {Object} elm
*/
var _onMouseout = function(elm){
if(typeof options['onMouseout'] === 'function'){
options['onMouseout']();
}
else{
$(elm).css({
"border" : ""
});
}
}

/**
* _getAction
* @param {string} action
Expand Down Expand Up @@ -81,19 +37,33 @@
if(window.addEventListener){
elm.addEventListener(
'dragenter',
function(e){
_onDragstart(this);
e.preventDefault();
},
false
(options['onDragenter'] || function(){}),
options['bubbling']
);
elm.addEventListener(
'dragend',
(options['onDragend'] || function(){}),
options['bubbling']
);
elm.addEventListener(
'dragover',
(options['onDragover'] || function(){}),
options['bubbling']
);
elm.addEventListener(
'dragstart',
(options['onDragstart'] || function(){}),
options['bubbling']
);
elm.addEventListener(
'dragleave',
function(e){
_onMouseout(this);
e.preventDefault();
},
false
(options['onDragleave'] || function(){}),
options['bubbling']
);
elm.addEventListener(
'dragcancel',
(options['onDragcancel'] || function(){}),
options['bubbling']
);
elm.addEventListener(
'drop',
Expand Down Expand Up @@ -162,9 +132,9 @@
data.append(mimetypeFieldName, file.type);
xhr.send(data);
}
_onMouseout(this);
options['onDragleave'](e);
},
false
options['bubbling']
);
}
});
Expand Down
29 changes: 25 additions & 4 deletions app/assets/javascripts/room.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,33 @@ $(function() {
// ------------------------------
// File DnD
// ------------------------------
var uploadConfig = {
onDragenter : function(e){
$('.droppable').css({"display":"block"});
setTimeout(function(){
$('.droppable').css({"opacity":"1"});
}, 0);
}
};
$('body').dropUploader(uploadConfig);
var uploadConfig = {
action : AsakusaSatellite.url.message,
onDragleave : function(e){
$('.droppable').css({"opacity":"0"});
setTimeout(function(){
$('.droppable').css({"display":"none"});
},200);
},
onDragcancel : this['onDragleave'],
onDragover :
function(e){
e.preventDefault();
e.stopPropagation();
},
params : [{ room_id : AsakusaSatellite.current.room},
{ authenticity_token: AsakusaSatellite.form_auth }]
};
$('.message-list').dropUploader(uploadConfig);
$('#message').dropUploader(uploadConfig);
{ authenticity_token: AsakusaSatellite.form_auth }
]
}
$('.droppable').dropUploader(uploadConfig);
});

13 changes: 13 additions & 0 deletions app/assets/stylesheets/main.css.sass.erb
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,19 @@ body
:font-size 80%
:border-top 1px solid #ccc

.droppable
:position fixed
:left 0px
:top 0px
:width 100%
:height 100%
:z-index 1000
:display none
:opacity 0
:box-shadow 0px 0px 10px 5px #e2949b inset
:-moz-transition opacity 0.2s linear
:-webkit-transition opacity 0.2s linear

.yield
:width 660px
:margin auto
Expand Down
1 change: 1 addition & 0 deletions app/views/chat/room.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
=text_area_tag :message, '', :class => :text, :autofocus=>true, :placeholder=> t('placeholder_message')
=submit_tag t(:send), :class => 'submit red button large', :id => 'send'
.chat_room_bottom= raw(call_hook(:chat_room_bottom, :room => @room))
.droppable

= content_for :javascripts do
- AsakusaSatellite::MessagePusher.jsFiles.each do|file|
Expand Down

0 comments on commit d50ae00

Please sign in to comment.