1
+ ( function ( $ ) {
2
+
3
+ $ . fn . pad = function ( options ) {
4
+ var settings = {
5
+ 'host' : 'http://0.0.0.0:9001' ,
6
+ 'baseUrl' : '/p/' ,
7
+ 'showControls' : true ,
8
+ 'showChat' : false ,
9
+ 'showLineNumbers' : false ,
10
+ 'userName' : 'nouser' ,
11
+ 'useMonospaceFont' : true ,
12
+ 'noColors' : false ,
13
+ 'userColor' : false ,
14
+ 'hideQRCode' : false ,
15
+ 'alwaysShowChat' : false ,
16
+ 'width' : 100 ,
17
+ 'height' : 100 ,
18
+ 'border' : 0 ,
19
+ 'borderStyle' : 'solid' ,
20
+ 'toggleTextOn' : 'Disable Rich-text' ,
21
+ 'toggleTextOff' : 'Enable Rich-text'
22
+ } ;
23
+
24
+ var $self = this ;
25
+ if ( ! $self . length ) return ;
26
+ if ( ! $self . attr ( 'id' ) ) throw new Error ( 'No "id" attribute' ) ;
27
+
28
+ var useValue = $self [ 0 ] . tagName . toLowerCase ( ) == 'textarea' ;
29
+ var selfId = $self . attr ( 'id' ) ;
30
+ var epframeId = 'epframe' + selfId ;
31
+ // This writes a new frame if required
32
+ if ( ! options . getContents ) {
33
+ if ( options ) {
34
+ $ . extend ( settings , options ) ;
35
+ }
36
+
37
+ var iFrameLink = '<iframe id="' + epframeId ;
38
+ iFrameLink = iFrameLink + '" name="' + epframeId ;
39
+ iFrameLink = iFrameLink + '" src="' + settings . host + settings . baseUrl + settings . padId ;
40
+ iFrameLink = iFrameLink + '?showControls=' + settings . showControls ;
41
+ iFrameLink = iFrameLink + '&showChat=' + settings . showChat ;
42
+ iFrameLink = iFrameLink + '&showLineNumbers=' + settings . showLineNumbers ;
43
+ iFrameLink = iFrameLink + '&useMonospaceFont=' + settings . useMonospaceFont ;
44
+ iFrameLink = iFrameLink + '&userName=' + settings . userName ;
45
+ iFrameLink = iFrameLink + '&noColors=' + settings . noColors ;
46
+ iFrameLink = iFrameLink + '&userColor=' + settings . userColor ;
47
+ iFrameLink = iFrameLink + '&hideQRCode=' + settings . hideQRCode ;
48
+ iFrameLink = iFrameLink + '&alwaysShowChat=' + settings . alwaysShowChat ;
49
+ iFrameLink = iFrameLink + '" style="border:' + settings . border ;
50
+ iFrameLink = iFrameLink + '; border-style:' + settings . borderStyle ;
51
+ iFrameLink = iFrameLink + ';" width="' + '100%' ; //settings.width;
52
+ iFrameLink = iFrameLink + '" height="' + settings . height ;
53
+ iFrameLink = iFrameLink + '"></iframe>' ;
54
+
55
+
56
+ var $iFrameLink = $ ( iFrameLink ) ;
57
+
58
+ if ( useValue ) {
59
+ var $toggleLink = $ ( '<a href="#' + selfId + '">' + settings . toggleTextOn + '</a>' ) . click ( function ( ) {
60
+ var $this = $ ( this ) ;
61
+ $this . toggleClass ( 'active' ) ;
62
+ if ( $this . hasClass ( 'active' ) ) $this . text ( settings . toggleTextOff ) ;
63
+ $self . pad ( { getContents : true } ) ;
64
+ return false ;
65
+ } ) ;
66
+ $self
67
+ . hide ( )
68
+ . after ( $toggleLink )
69
+ . after ( $iFrameLink )
70
+ ;
71
+ }
72
+ else {
73
+ $self . html ( iFrameLink ) ;
74
+ }
75
+ }
76
+
77
+ // This reads the etherpad contents if required
78
+ else {
79
+ var frameUrl = $ ( '#' + epframeId ) . attr ( 'src' ) . split ( '?' ) [ 0 ] ;
80
+ var contentsUrl = frameUrl + "/export/html" ;
81
+ var target = $ ( '#' + options . getContents ) ;
82
+
83
+ // perform an ajax call on contentsUrl and write it to the parent
84
+ $ . get ( contentsUrl , function ( data ) {
85
+
86
+ if ( target . is ( ':input' ) ) {
87
+ target . val ( data ) . show ( ) ;
88
+ }
89
+ else {
90
+ target . html ( data ) ;
91
+ }
92
+
93
+ $ ( '#' + epframeId ) . remove ( ) ;
94
+ } ) ;
95
+ }
96
+
97
+
98
+ return $self ;
99
+ } ;
100
+ } ) ( jQuery ) ;
0 commit comments