Add jquery etherpad-lite plugin

master
Daniel Berteaud 11 years ago
parent ce7ed9e8b5
commit 1bf4330ec9
  1. 100
      public/js/etherpad.js
  2. 3
      public/vroom.pl
  3. 2
      templates/default/js_room.html.ep

@ -0,0 +1,100 @@
(function( $ ){
$.fn.pad = function( options ) {
var settings = {
'host' : 'http://beta.etherpad.org',
'baseUrl' : '/p/',
'showControls' : false,
'showChat' : false,
'showLineNumbers' : false,
'userName' : 'unnamed',
'useMonospaceFont' : false,
'noColors' : false,
'userColor' : false,
'hideQRCode' : false,
'alwaysShowChat' : false,
'width' : 100,
'height' : 100,
'border' : 0,
'borderStyle' : 'solid',
'toggleTextOn' : 'Disable Rich-text',
'toggleTextOff' : 'Enable Rich-text'
};
var $self = this;
if (!$self.length) return;
if (!$self.attr('id')) throw new Error('No "id" attribute');
var useValue = $self[0].tagName.toLowerCase() == 'textarea';
var selfId = $self.attr('id');
var epframeId = 'epframe'+ selfId;
// This writes a new frame if required
if ( !options.getContents ) {
if ( options ) {
$.extend( settings, options );
}
var iFrameLink = '<iframe id="'+epframeId;
iFrameLink = iFrameLink +'" name="'+epframeId;
iFrameLink = iFrameLink +'" src="'+settings.host+settings.baseUrl+settings.padId;
iFrameLink = iFrameLink + '?showControls='+settings.showControls;
iFrameLink = iFrameLink + '&showChat='+settings.showChat;
iFrameLink = iFrameLink + '&showLineNumbers='+settings.showLineNumbers;
iFrameLink = iFrameLink + '&useMonospaceFont='+settings.useMonospaceFont;
iFrameLink = iFrameLink + '&userName=' + settings.userName;
iFrameLink = iFrameLink + '&noColors=' + settings.noColors;
iFrameLink = iFrameLink + '&userColor=' + settings.userColor;
iFrameLink = iFrameLink + '&hideQRCode=' + settings.hideQRCode;
iFrameLink = iFrameLink + '&alwaysShowChat=' + settings.alwaysShowChat;
iFrameLink = iFrameLink +'" style="border:'+settings.border;
iFrameLink = iFrameLink +'; border-style:'+settings.borderStyle;
iFrameLink = iFrameLink +';" width="'+ '100%';//settings.width;
iFrameLink = iFrameLink +'" height="'+ settings.height;
iFrameLink = iFrameLink +'"></iframe>';
var $iFrameLink = $(iFrameLink);
if (useValue) {
var $toggleLink = $('<a href="#'+ selfId +'">'+ settings.toggleTextOn +'</a>').click(function(){
var $this = $(this);
$this.toggleClass('active');
if ($this.hasClass('active')) $this.text(settings.toggleTextOff);
$self.pad({getContents: true});
return false;
});
$self
.hide()
.after($toggleLink)
.after($iFrameLink)
;
}
else {
$self.html(iFrameLink);
}
}
// This reads the etherpad contents if required
else {
var frameUrl = $('#'+ epframeId).attr('src').split('?')[0];
var contentsUrl = frameUrl + "/export/html";
var target = $('#'+ options.getContents);
// perform an ajax call on contentsUrl and write it to the parent
$.get(contentsUrl, function(data) {
if (target.is(':input')) {
target.val(data).show();
}
else {
target.html(data);
}
$('#'+ epframeId).remove();
});
}
return $self;
};
})( jQuery );

@ -41,6 +41,9 @@ our $components = {
"jquery-tinytimer" => { "jquery-tinytimer" => {
url => 'https://github.com/odyniec/jQuery-tinyTimer' url => 'https://github.com/odyniec/jQuery-tinyTimer'
}, },
"jquery-etherpad-lite" => {
url => 'https://github.com/ether/etherpad-lite-jquery-plugin'
},
"sprintf.js" => { "sprintf.js" => {
url => 'http://hexmen.com/blog/2007/03/printf-sprintf/' url => 'http://hexmen.com/blog/2007/03/printf-sprintf/'
}, },

@ -1,5 +1,5 @@
<% <%
foreach my $js (qw(simplewebrtc.bundle.js jquery.browser.min.js sprintf.js FileSaver.js jquery.tinytimer.min.js)){ foreach my $js (qw(simplewebrtc.bundle.js jquery.browser.min.js sprintf.js FileSaver.js jquery.tinytimer.min.js etherpad.js)){
%> %>
<script type="text/javascript" src="<%= $self->get_url('/') %><%= $self->get_mtime("js/$js") %>/js/<%= $js %>"></script> <script type="text/javascript" src="<%= $self->get_url('/') %><%= $self->get_mtime("js/$js") %>/js/<%= $js %>"></script>
<% } %> <% } %>

Loading…
Cancel
Save