transit 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +19 -11
- data/app/assets/images/transit/icon24x24.png +0 -0
- data/app/assets/images/transit/icon24x24_files.png +0 -0
- data/app/assets/images/transit/jplayer.swf +0 -0
- data/app/assets/images/transit/uploadify.swf +0 -0
- data/app/assets/images/transit/video_player.swf +0 -0
- data/app/assets/javascripts/jqtools/expose.js +224 -0
- data/app/assets/javascripts/jqtools/flashembed.js +300 -0
- data/app/assets/javascripts/jqtools/overlay.js +294 -0
- data/app/assets/javascripts/jqtools/scrollable.js +3 -0
- data/app/assets/javascripts/jqtools/scrollable/autoscroll.js +81 -0
- data/app/assets/javascripts/jqtools/scrollable/base.js +335 -0
- data/app/assets/javascripts/jqtools/scrollable/navigator.js +139 -0
- data/app/assets/javascripts/jqtools/validator.js +590 -0
- data/app/assets/javascripts/jqueryui/accordion.js +611 -0
- data/app/assets/javascripts/jqueryui/autocomplete.js +612 -0
- data/app/assets/javascripts/jqueryui/button.js +388 -0
- data/app/assets/javascripts/jqueryui/core.js +312 -0
- data/app/assets/javascripts/jqueryui/datepicker.js +1791 -0
- data/app/assets/javascripts/jqueryui/dialog.js +878 -0
- data/app/assets/javascripts/jqueryui/draggable.js +815 -0
- data/app/assets/javascripts/jqueryui/droppable.js +285 -0
- data/app/assets/javascripts/jqueryui/effects/blind.js +49 -0
- data/app/assets/javascripts/jqueryui/effects/bounce.js +78 -0
- data/app/assets/javascripts/jqueryui/effects/clip.js +54 -0
- data/app/assets/javascripts/jqueryui/effects/core.js +746 -0
- data/app/assets/javascripts/jqueryui/effects/drop.js +50 -0
- data/app/assets/javascripts/jqueryui/effects/explode.js +79 -0
- data/app/assets/javascripts/jqueryui/effects/fade.js +32 -0
- data/app/assets/javascripts/jqueryui/effects/fold.js +56 -0
- data/app/assets/javascripts/jqueryui/effects/highlight.js +50 -0
- data/app/assets/javascripts/jqueryui/effects/pulsate.js +51 -0
- data/app/assets/javascripts/jqueryui/effects/scale.js +178 -0
- data/app/assets/javascripts/jqueryui/effects/shake.js +57 -0
- data/app/assets/javascripts/jqueryui/effects/slide.js +50 -0
- data/app/assets/javascripts/jqueryui/effects/transfer.js +45 -0
- data/app/assets/javascripts/jqueryui/mouse.js +160 -0
- data/app/assets/javascripts/jqueryui/position.js +252 -0
- data/app/assets/javascripts/jqueryui/progressbar.js +109 -0
- data/app/assets/javascripts/jqueryui/resizable.js +814 -0
- data/app/assets/javascripts/jqueryui/selectable.js +266 -0
- data/app/assets/javascripts/jqueryui/slider.js +666 -0
- data/app/assets/javascripts/jqueryui/sortable.js +1077 -0
- data/app/assets/javascripts/jqueryui/tabs.js +758 -0
- data/app/assets/javascripts/jqueryui/widget.js +262 -0
- data/app/assets/javascripts/libs/backbone.js +1152 -0
- data/app/assets/javascripts/libs/cookie.js +89 -0
- data/app/assets/javascripts/libs/fileinput.js +130 -0
- data/app/assets/javascripts/libs/jplayer.js +1768 -0
- data/app/assets/javascripts/libs/proper.js +541 -0
- data/app/assets/javascripts/libs/sanitize.js +282 -0
- data/app/assets/javascripts/libs/selecttolist.js +75 -0
- data/app/assets/javascripts/libs/underscore.js +807 -0
- data/app/assets/javascripts/libs/uploadify.js +677 -0
- data/app/assets/javascripts/libs/wymeditor.js +9538 -0
- data/app/assets/javascripts/transit.js +4 -0
- data/app/assets/javascripts/transit/admin.js +22 -0
- data/app/assets/javascripts/transit/admin/contexts.js +52 -0
- data/app/assets/javascripts/transit/admin/fields.js +36 -0
- data/app/assets/javascripts/transit/admin/upload.js +109 -0
- data/app/assets/javascripts/transit/config.js.erb +101 -0
- data/app/assets/javascripts/transit/contexts/audio.js +39 -0
- data/app/assets/javascripts/transit/contexts/video.js +79 -0
- data/app/assets/javascripts/transit/core.js +171 -0
- data/app/assets/javascripts/transit/frontend.js +3 -0
- data/app/assets/javascripts/transit/lib/base64.js +120 -0
- data/app/assets/javascripts/transit/lib/editor.js +177 -0
- data/app/assets/javascripts/transit/views/audio_player.jst +22 -0
- data/app/assets/javascripts/transit/views/editor_toolbar.jst +12 -0
- data/app/assets/javascripts/transit/views/file_upload.jst +5 -0
- data/app/assets/javascripts/transit/views/video_player.jst +20 -0
- data/app/assets/javascripts/transit/views/wym_box.jst +4 -0
- data/app/assets/javascripts/transit/views/wym_iframe.jst +3 -0
- data/app/assets/stylesheets/transit.css.scss.erb +42 -0
- data/app/assets/stylesheets/transit/forms.css.scss +66 -0
- data/app/assets/stylesheets/transit/media/audio.css.scss +65 -0
- data/app/assets/stylesheets/transit/media/video.css.scss +30 -0
- data/app/assets/stylesheets/transit/panel.css.scss +100 -0
- data/app/assets/stylesheets/transit/ui.css.scss +507 -0
- data/app/controllers/pages_controller.rb +3 -0
- data/app/controllers/posts_controller.rb +3 -0
- data/app/controllers/transit/assets_controller.rb +38 -0
- data/app/controllers/transit/contexts_controller.rb +12 -9
- data/app/controllers/transit/pages_controller.rb +26 -0
- data/app/controllers/transit/posts_controller.rb +31 -0
- data/app/controllers/transit/topics_controller.rb +5 -0
- data/app/controllers/transit_controller.rb +16 -0
- data/app/helpers/transit/admin_helper.rb +43 -0
- data/app/helpers/transit/form_helper.rb +17 -0
- data/app/helpers/transit/package_helper.rb +41 -0
- data/app/helpers/transit/pagination_helper.rb +58 -0
- data/app/helpers/transit_helper.rb +42 -0
- data/app/models/comment.rb +37 -0
- data/app/models/contexts/audio.rb +12 -0
- data/app/models/{text.rb → contexts/text.rb} +0 -0
- data/app/models/contexts/video.rb +24 -0
- data/app/models/topic.rb +19 -0
- data/app/models/transit/asset.rb +68 -0
- data/{lib → app/models}/transit/context.rb +29 -0
- data/app/views/contexts/_text.html.erb +1 -1
- data/app/views/posts/index.rss.builder +18 -0
- data/app/views/transit/assets/_file.html.erb +4 -0
- data/app/views/transit/assets/_image.html.erb +13 -0
- data/app/views/transit/assets/create.js.erb +8 -0
- data/app/views/transit/assets/destroy.js.erb +3 -0
- data/app/views/transit/assets/manage.html.erb +20 -0
- data/app/views/transit/contexts/_audio.html.erb +18 -0
- data/app/views/transit/contexts/_text.html.erb +6 -0
- data/app/views/transit/contexts/_video.html.erb +13 -0
- data/app/views/transit/contexts/destroy.js.erb +1 -0
- data/app/views/transit/contexts/index.html.erb +5 -0
- data/app/views/transit/contexts/new.js.erb +7 -0
- data/app/views/transit/contexts/show.html.erb +8 -0
- data/app/views/transit/index.html.erb +26 -0
- data/app/views/transit/index.js.erb +1 -0
- data/app/views/transit/interface/post_panel.html.erb +96 -0
- data/app/views/transit/pages/_table.html.erb +7 -0
- data/app/views/transit/pages/edit.html.erb +17 -0
- data/app/views/transit/pages/index.html.erb +17 -0
- data/app/views/transit/pages/update.js.erb +1 -0
- data/app/views/transit/posts/_form.html.erb +49 -0
- data/app/views/transit/posts/edit.html.erb +14 -0
- data/app/views/transit/posts/new.html.erb +21 -0
- data/app/views/transit/table.html.erb +13 -0
- data/app/views/transit/table.js.erb +8 -0
- data/app/views/transit/topics/manage.html.erb +28 -0
- data/config/locales/en.yml +22 -0
- data/config/routes.rb +3 -3
- data/lib/transit.rb +51 -17
- data/lib/transit/admin.rb +85 -0
- data/lib/transit/builders/form_builder.rb +319 -0
- data/lib/transit/builders/jst_builder.rb +38 -0
- data/lib/transit/builders/package_builder.rb +45 -0
- data/lib/transit/config.rb +20 -0
- data/lib/transit/controller/generator.rb +42 -0
- data/lib/transit/controller/responder.rb +34 -0
- data/lib/transit/core_ext.rb +18 -0
- data/lib/transit/errors/resource_not_found.rb +6 -0
- data/lib/transit/model/assets.rb +14 -0
- data/lib/transit/model/attachments.rb +55 -0
- data/lib/transit/model/auto_increment.rb +22 -0
- data/lib/transit/model/base.rb +56 -0
- data/lib/transit/model/comments.rb +19 -0
- data/lib/transit/model/hooks.rb +38 -0
- data/lib/transit/model/owners.rb +14 -0
- data/lib/transit/model/paginator.rb +92 -0
- data/lib/transit/model/topics.rb +14 -0
- data/lib/transit/package/page.rb +20 -12
- data/lib/transit/package/post.rb +87 -33
- data/lib/transit/package/post/validations.rb +14 -0
- data/lib/transit/rails/engine.rb +29 -13
- data/lib/transit/rails/railtie.rb +31 -0
- data/lib/transit/rails/routing.rb +11 -6
- data/lib/transit/services.rb +13 -0
- data/lib/transit/services/base.rb +14 -0
- data/lib/transit/services/facebook.rb +13 -0
- data/lib/transit/services/ted.rb +10 -0
- data/lib/transit/services/twitter.rb +13 -0
- data/lib/transit/services/vimeo.rb +10 -0
- data/lib/transit/services/you_tube.rb +12 -0
- data/lib/transit/version.rb +1 -1
- metadata +178 -31
- data/app/assets/stylesheets/includes/_compat.scss +0 -24
- data/app/assets/stylesheets/includes/_defaults.scss +0 -99
- data/app/assets/stylesheets/includes/_global.scss +0 -16
- data/app/assets/stylesheets/includes/_imports.scss +0 -27
- data/app/assets/stylesheets/includes/_mixins.scss +0 -38
- data/app/assets/stylesheets/includes/_setup.scss +0 -85
- data/app/assets/stylesheets/layout.css.scss +0 -29
- data/app/assets/stylesheets/transit.css +0 -3
- data/app/controllers/application_controller.rb +0 -5
- data/app/controllers/transit/index_controller.rb +0 -7
- data/app/controllers/transit/packages_controller.rb +0 -64
- data/app/controllers/transit/transit_controller.rb +0 -4
- data/app/helpers/routing_helpers.rb +0 -7
- data/app/models/audio.rb +0 -4
- data/app/models/package_asset.rb +0 -11
- data/app/models/video.rb +0 -8
- data/app/views/contexts/_audio.html.erb +0 -1
- data/app/views/contexts/_video.html.erb +0 -1
- data/app/views/layouts/transit.html.erb +0 -31
- data/app/views/transit/index/index.html.erb +0 -0
- data/lib/transit/helpers/controller_helpers.rb +0 -40
- data/lib/transit/helpers/model_helpers.rb +0 -26
- data/lib/transit/package.rb +0 -25
- data/lib/transit/package/base.rb +0 -49
@@ -0,0 +1,22 @@
|
|
1
|
+
//= require transit
|
2
|
+
//= require transit/frontend
|
3
|
+
//= require libs/proper
|
4
|
+
//= require libs/wymeditor
|
5
|
+
//= require libs/selecttolist
|
6
|
+
//= require libs/cookie
|
7
|
+
//= require libs/fileinput
|
8
|
+
//= require_tree ./lib
|
9
|
+
//= require_tree ./admin
|
10
|
+
//= require_self
|
11
|
+
|
12
|
+
|
13
|
+
jQuery(function(){
|
14
|
+
|
15
|
+
jQuery('#transit_admin_panel_wrapper').tabs({ cookie:{} });
|
16
|
+
jQuery('*[data-ui-button]').each(function(i, element){
|
17
|
+
var self = jQuery(element),
|
18
|
+
icon = self.data('ui-button');
|
19
|
+
self.button({ icons: { primary: 'ui-icon-'+ icon } });
|
20
|
+
});
|
21
|
+
|
22
|
+
});
|
@@ -0,0 +1,52 @@
|
|
1
|
+
jQuery(function(){
|
2
|
+
|
3
|
+
var listing = jQuery('#context_list'),
|
4
|
+
form = listing.closest('form'),
|
5
|
+
options = {
|
6
|
+
title: 'Options',
|
7
|
+
autoOpen: false,
|
8
|
+
draggable: true,
|
9
|
+
resizable: false,
|
10
|
+
dialogClass: 'transit_context_dialog',
|
11
|
+
minWidth: false,
|
12
|
+
minHeight: false
|
13
|
+
};
|
14
|
+
|
15
|
+
listing
|
16
|
+
.bind("context:added", add_new_context)
|
17
|
+
.bind("context:destroyed", remove_context);
|
18
|
+
|
19
|
+
listing.find('li.field').each( function(i, item ){
|
20
|
+
var item = jQuery(item), panel;
|
21
|
+
if( item.hasClass('field_text') ) return true;
|
22
|
+
|
23
|
+
panel = item.find('div.toolbar')
|
24
|
+
panel.dialog( options );
|
25
|
+
item.bind('mouseover', function( event ){
|
26
|
+
item.addClass('ui-state-hover');
|
27
|
+
})
|
28
|
+
.bind('mouseout', function( event){
|
29
|
+
item.removeClass('ui-state-hover');
|
30
|
+
})
|
31
|
+
.bind('click', function( event ){
|
32
|
+
panel.dialog('open');
|
33
|
+
});
|
34
|
+
|
35
|
+
});
|
36
|
+
|
37
|
+
function add_new_context( event, content, type ){
|
38
|
+
var toolbar;
|
39
|
+
if( (/text/i).test(type) ) return true;
|
40
|
+
|
41
|
+
content = jQuery(content);
|
42
|
+
toolbar = jQuery(content.filter('div.toolbar'));
|
43
|
+
toolbar.dialog( options );
|
44
|
+
listing.append(content);
|
45
|
+
|
46
|
+
}
|
47
|
+
|
48
|
+
function remove_context( event, target ){
|
49
|
+
|
50
|
+
}
|
51
|
+
|
52
|
+
});
|
@@ -0,0 +1,36 @@
|
|
1
|
+
jQuery(function(){
|
2
|
+
|
3
|
+
var dp = jQuery('div.datepicker'),
|
4
|
+
name = dp.attr('rel'),
|
5
|
+
month_select = jQuery('#'+name+"_2i"),
|
6
|
+
day_select = jQuery('#'+name+"_3i"),
|
7
|
+
year_select = jQuery('#'+name+"_1i");
|
8
|
+
|
9
|
+
|
10
|
+
jQuery('.transit-editable').transit('editor');
|
11
|
+
|
12
|
+
if( dp.length > 0 ){
|
13
|
+
|
14
|
+
dp.datepicker({
|
15
|
+
dateFormat: 'yy-m-d',
|
16
|
+
defaultDate: [year_select.val(), month_select.val(), day_select.val()].join("-").toString(),
|
17
|
+
onSelect: function( dateText, input ){
|
18
|
+
var date_opts = dateText.split("-");
|
19
|
+
year_select.val(date_opts[0]);
|
20
|
+
month_select.val(date_opts[1]);
|
21
|
+
day_select.val(date_opts[2]);
|
22
|
+
}
|
23
|
+
});
|
24
|
+
}
|
25
|
+
|
26
|
+
jQuery('#post_edit').bind('submit', function( event ){
|
27
|
+
var i, inst;
|
28
|
+
for( i = 0; i < jQuery.wymeditors.length, i++; ){
|
29
|
+
jQuery.wymeditors(i).update();
|
30
|
+
}
|
31
|
+
return true;
|
32
|
+
});
|
33
|
+
|
34
|
+
jQuery('#post_default_image').fileinput({ buttonText:'', inputText: 'Choose an image' });
|
35
|
+
|
36
|
+
});
|
@@ -0,0 +1,109 @@
|
|
1
|
+
//= require libs/uploadify
|
2
|
+
//= require libs/backbone
|
3
|
+
//= require transit/views/file_upload
|
4
|
+
|
5
|
+
jQuery(function(){
|
6
|
+
|
7
|
+
var upload_button = jQuery('#upload_file_link'),
|
8
|
+
upload_dialog,
|
9
|
+
upload_field,
|
10
|
+
upload_url = upload_button.data('upload-path'),
|
11
|
+
field_id = _.uniqueId('upload_field'),
|
12
|
+
upload_conf = transit.merge(transit.config['uploadify'], {
|
13
|
+
id : field_id,
|
14
|
+
buttonClass : '',
|
15
|
+
uploader : upload_url,
|
16
|
+
fileObjName : upload_button.attr('rel'),
|
17
|
+
postData : {},
|
18
|
+
height : 25,
|
19
|
+
width : 135,
|
20
|
+
onUploadSuccess : process_upload,
|
21
|
+
onUploadProgress: update_progress,
|
22
|
+
onSelect: add_to_queue
|
23
|
+
}),
|
24
|
+
queue_list;
|
25
|
+
|
26
|
+
|
27
|
+
if( upload_button.length == 0 ) return true;
|
28
|
+
|
29
|
+
upload_dialog = jQuery(transit.template.parse('transit/views/file_upload',
|
30
|
+
{
|
31
|
+
field_name: upload_button.attr('rel'),
|
32
|
+
field_id:field_id
|
33
|
+
}));
|
34
|
+
|
35
|
+
upload_dialog
|
36
|
+
.appendTo(jQuery('body'))
|
37
|
+
.dialog({
|
38
|
+
title:'Upload Files',
|
39
|
+
position:['center', 'center'],
|
40
|
+
autoOpen:false,
|
41
|
+
closeOnEscape:false,
|
42
|
+
width:400,
|
43
|
+
minHeight: 300,
|
44
|
+
draggable:true,
|
45
|
+
resizable: false,
|
46
|
+
buttons: [
|
47
|
+
{ text: 'Start Upload',
|
48
|
+
click: start_queue,
|
49
|
+
icon: 'ui-icon-check'
|
50
|
+
},
|
51
|
+
{ text: 'Cancel',
|
52
|
+
click: cancel_queue,
|
53
|
+
icon: 'ui-icon-closethick'
|
54
|
+
}
|
55
|
+
]
|
56
|
+
});
|
57
|
+
|
58
|
+
upload_field = jQuery("#"+field_id);
|
59
|
+
queue_list = jQuery('#file_upload_queue');
|
60
|
+
|
61
|
+
upload_button.bind('click', function( event ){
|
62
|
+
event.preventDefault();
|
63
|
+
upload_dialog.dialog('open');
|
64
|
+
activate_queue();
|
65
|
+
});
|
66
|
+
|
67
|
+
function activate_queue(){
|
68
|
+
upload_field.uploadify(upload_conf);
|
69
|
+
jQuery('#'+field_id+'_button').button({ icons: { primary: 'ui-icon-plusthick' } });
|
70
|
+
jQuery('#'+field_id).css({
|
71
|
+
position: 'absolute',
|
72
|
+
top: '1em',
|
73
|
+
left: '1em'
|
74
|
+
});
|
75
|
+
}
|
76
|
+
|
77
|
+
function add_to_queue(){
|
78
|
+
jQuery('#file_upload_queue div.uploadifyProgress').progressbar();
|
79
|
+
}
|
80
|
+
|
81
|
+
function start_queue( event ){
|
82
|
+
upload_field.uploadifyUpload();
|
83
|
+
}
|
84
|
+
|
85
|
+
function cancel_queue( event ){
|
86
|
+
upload_dialog.dialog('close');
|
87
|
+
}
|
88
|
+
|
89
|
+
function process_upload(file, data, success){
|
90
|
+
var resp = jQuery.parseJSON(data),
|
91
|
+
item = jQuery(resp.content);
|
92
|
+
|
93
|
+
if( resp.image ) item.hide().appendTo( jQuery('#asset_image_list') );
|
94
|
+
else item.hide().appendTo( jQuery('#asset_image_list') );
|
95
|
+
|
96
|
+
item.fadeIn('fast');
|
97
|
+
jQuery('#' + file.id).next('div.uploadifyProgress').progressbar('value', 0);
|
98
|
+
jQuery('#asset_upload').uploadifyCancel(file.id);
|
99
|
+
}
|
100
|
+
|
101
|
+
function update_progress(file, fileBytesLoaded, fileTotalBytes, queueBytesLoaded, queueSize){
|
102
|
+
var percentage = Math.round(fileBytesLoaded / fileTotalBytes * 100);
|
103
|
+
console.log(jQuery('#' + file.id).find('div.uploadifyProgress'));
|
104
|
+
jQuery('#' + file.id).find('div.uploadifyProgress').progressbar('value', percentage);
|
105
|
+
return false;
|
106
|
+
}
|
107
|
+
|
108
|
+
|
109
|
+
});
|
@@ -0,0 +1,101 @@
|
|
1
|
+
(function(transit){
|
2
|
+
|
3
|
+
var media_defaults = {
|
4
|
+
swfPath: "<%= asset_path 'transit/jplayer.swf' %>",
|
5
|
+
solution: "flash,html",
|
6
|
+
idPrefix: "transit_media",
|
7
|
+
preload: "auto",
|
8
|
+
backgroundColor: "",
|
9
|
+
cssSelector: {
|
10
|
+
play: ".media-play",
|
11
|
+
pause: ".media-pause",
|
12
|
+
stop: ".media-stop",
|
13
|
+
videoPlay: ".media-video-play",
|
14
|
+
seekBar: ".media-seek-bar",
|
15
|
+
playBar: ".media-play-bar",
|
16
|
+
mute: ".media-mute",
|
17
|
+
unmute: ".media-unmute",
|
18
|
+
volumeBar: ".media-volume-bar",
|
19
|
+
volumeBarValue: ".media-volume-bar-value",
|
20
|
+
currentTime: ".media-current-time",
|
21
|
+
duration: ".media-duration"
|
22
|
+
}
|
23
|
+
};
|
24
|
+
|
25
|
+
|
26
|
+
// HTML5 player... ignore for now.
|
27
|
+
//transit.configure('video', jQuery.extend({}, media_defaults, { supplied: 'm4v' }));
|
28
|
+
|
29
|
+
transit.configure('audio', jQuery.extend({}, media_defaults, { supplied: 'mp3,m4a,wav' }));
|
30
|
+
transit.configure('video', {
|
31
|
+
src: "<%= asset_path 'transit/video_player.swf' %>",
|
32
|
+
image: '',
|
33
|
+
movie: '',
|
34
|
+
autoplay: 'false',
|
35
|
+
loop: 'false',
|
36
|
+
autohide: 'false',
|
37
|
+
fullscreen: 'true',
|
38
|
+
color_text: "0xffffff",
|
39
|
+
color_seekbar: "0x108194",
|
40
|
+
color_loadingbar: "0xe4f2f6",
|
41
|
+
color_seekbarbg: "0x108194",
|
42
|
+
color_button_out: "0x108194",
|
43
|
+
color_button_over: "0xd15245",
|
44
|
+
color_button_highlight: "0xffffff"
|
45
|
+
});
|
46
|
+
|
47
|
+
transit.configure('richtext', {
|
48
|
+
basePath:'assets/',
|
49
|
+
skin:'compact',
|
50
|
+
toolsItems: [],
|
51
|
+
containersItems: [],
|
52
|
+
classesItems: []
|
53
|
+
});
|
54
|
+
|
55
|
+
transit.configure('uploadify', {
|
56
|
+
swf : "<%= asset_path 'transit/uploadify.swf' %>",
|
57
|
+
auto : false,
|
58
|
+
buttonClass : 'button',
|
59
|
+
buttonCursor : 'hand',
|
60
|
+
buttonImage : '',
|
61
|
+
buttonText : 'Choose Files',
|
62
|
+
cancelImage : '',
|
63
|
+
checkExisting : false,
|
64
|
+
debug : false,
|
65
|
+
fileSizeLimit : 104857600,
|
66
|
+
fileTypeDesc : 'Choose an Image or Video',
|
67
|
+
fileTypeExts : '*.*',
|
68
|
+
height : 30,
|
69
|
+
method : 'post',
|
70
|
+
multi : true,
|
71
|
+
queueID : 'file_upload_queue',
|
72
|
+
queueSizeLimit : 10,
|
73
|
+
removeCompleted : false,
|
74
|
+
requeueErrors : true,
|
75
|
+
preventCaching : true,
|
76
|
+
progressData : 'percentage',
|
77
|
+
successTimeout : 30,
|
78
|
+
scriptAccess : 'always',
|
79
|
+
transparent : true,
|
80
|
+
uploadLimit : 999,
|
81
|
+
uploaderType : 'html5',
|
82
|
+
width : 120,
|
83
|
+
checkExisting : false
|
84
|
+
});
|
85
|
+
|
86
|
+
<% Transit.contexts.map(&:to_s).map(&:classify).each do |context| %>
|
87
|
+
transit.<%= context %>Context = Backbone.Model.extend({
|
88
|
+
defaults: {
|
89
|
+
type: "<%= context %>",
|
90
|
+
<%= context.constantize.new.to_js.collect{ |key, value| "#{key}: \"\" " }.join(",\n\t\t") %>
|
91
|
+
},
|
92
|
+
url: function(){
|
93
|
+
"/transit/" + resource_url + "/" + package_id + "/" + "contexts/"
|
94
|
+
},
|
95
|
+
build: function( element ){
|
96
|
+
this.attributes = transit.context.data( element, true );
|
97
|
+
}
|
98
|
+
});
|
99
|
+
<% end %>
|
100
|
+
|
101
|
+
})(transit);
|
@@ -0,0 +1,39 @@
|
|
1
|
+
//= require libs/jplayer
|
2
|
+
//= require transit/views/audio_player
|
3
|
+
|
4
|
+
(function(transit){
|
5
|
+
|
6
|
+
var audio = function( element, options ){
|
7
|
+
var self = this;
|
8
|
+
var data = transit.context.data( element, true ) || {},
|
9
|
+
config = transit.merge( options, data ),
|
10
|
+
conf = transit.config['audio'],
|
11
|
+
uid = _.uniqueId(),
|
12
|
+
ui = transit.template.parse('transit/views/audio_player', { uid: uid }),
|
13
|
+
player_element = jQuery("<div class='player_instance' id='transit_audio_"+ uid +"'></div>");
|
14
|
+
|
15
|
+
jQuery.extend(self, {
|
16
|
+
play: function(){ element.jPlayer('play'); },
|
17
|
+
pause: function(){ element.jPlayer('pause'); },
|
18
|
+
stop: function(){ element.jPlayer("stop"); }
|
19
|
+
});
|
20
|
+
|
21
|
+
conf.ready = function(){
|
22
|
+
var opts = {}, ext = config.ext;
|
23
|
+
if( typeof ext == 'undefined' ) ext = /[^.]+$/.exec(config.source);
|
24
|
+
opts[ext] = config.source;
|
25
|
+
jQuery(player_element).jPlayer('setMedia', opts);
|
26
|
+
};
|
27
|
+
|
28
|
+
conf.cssSelectorAncestor = '#transit_media_interface_' + uid;
|
29
|
+
element.append(player_element);
|
30
|
+
element.append(jQuery(ui)).addClass('media-audio');
|
31
|
+
player_element.jPlayer(conf);
|
32
|
+
|
33
|
+
return self;
|
34
|
+
};
|
35
|
+
|
36
|
+
transit.context.add("audio", audio);
|
37
|
+
|
38
|
+
|
39
|
+
})(transit);
|
@@ -0,0 +1,79 @@
|
|
1
|
+
//= require libs/jplayer
|
2
|
+
//= require transit/views/video_player
|
3
|
+
|
4
|
+
(function(transit){
|
5
|
+
|
6
|
+
var video = function( element, options ){
|
7
|
+
var self = this;
|
8
|
+
var data = transit.context.data( element, true ) || {},
|
9
|
+
inst, config = transit.merge( options, data ),
|
10
|
+
player, player_element,
|
11
|
+
pid = _.uniqueId();
|
12
|
+
|
13
|
+
config.uid = pid;
|
14
|
+
|
15
|
+
player_element = jQuery("<div class='player_instance' id='transit_video_"+ pid +"'></div>");
|
16
|
+
element.prepend(player_element);
|
17
|
+
player_element.css({ width:'100%', height:'100%' });
|
18
|
+
|
19
|
+
if( typeof data.type == 'undefined' ){
|
20
|
+
inst = new video.basic( element, player_element, config );
|
21
|
+
}else inst = new video[data.type]( element, player_element, config );
|
22
|
+
|
23
|
+
jQuery.extend(inst, {
|
24
|
+
play: function(){ element.jPlayer('play'); },
|
25
|
+
pause: function(){ element.jPlayer('pause'); },
|
26
|
+
stop: function(){ element.jPlayer("stop"); }
|
27
|
+
});
|
28
|
+
|
29
|
+
return inst;
|
30
|
+
};
|
31
|
+
|
32
|
+
video.basic = function( element, player_element, options ){
|
33
|
+
var params = {
|
34
|
+
allowfullscreen: 'true',
|
35
|
+
allowscriptaccess: 'always',
|
36
|
+
bgcolor: '#000000',
|
37
|
+
wmode: 'opaque'
|
38
|
+
},
|
39
|
+
self = this,
|
40
|
+
config = transit.merge(transit.config['video'], options);
|
41
|
+
params.src = config.src;
|
42
|
+
|
43
|
+
if( options.type == 'youtube' && !(/youtube/).test( options.source )){
|
44
|
+
options.source = "http://www.youtube.com/v/" + options.source;
|
45
|
+
}
|
46
|
+
|
47
|
+
options.movie = options.source;
|
48
|
+
player_element.flashembed(params, $.extend({}, config, options));
|
49
|
+
|
50
|
+
return self;
|
51
|
+
}
|
52
|
+
|
53
|
+
// video.basic = function( element, player_element, options ){
|
54
|
+
// var conf = _.clone(transit.config['video']),
|
55
|
+
// ui = transit.template.parse('transit/views/video_player', { uid: options.uid });
|
56
|
+
//
|
57
|
+
// element.append(jQuery(ui));
|
58
|
+
//
|
59
|
+
// conf.ready = function(){
|
60
|
+
// var opts = {}, ext = options.ext;
|
61
|
+
//
|
62
|
+
// if( typeof ext == 'undefined' ) ext = /[^.]+$/.exec(options.source);
|
63
|
+
// if( ext == 'mp4' ) ext = 'm4v';
|
64
|
+
// if( options.image ) opts.poster = options.image;
|
65
|
+
// opts[ext] = options.source;
|
66
|
+
// jQuery(player_element).jPlayer('setMedia', opts);
|
67
|
+
// };
|
68
|
+
// conf.cssSelectorAncestor = '#transit_media_interface_' + options.uid;
|
69
|
+
// jQuery(player_element).jPlayer(conf);
|
70
|
+
// };
|
71
|
+
|
72
|
+
video.youtube = function( element, options ){
|
73
|
+
|
74
|
+
};
|
75
|
+
|
76
|
+
transit.context.add("video", video);
|
77
|
+
|
78
|
+
|
79
|
+
})(transit);
|