mirror of
				https://github.com/fspc/Yellow-Bike-Database.git
				synced 2025-10-31 00:45:35 -04:00 
			
		
		
		
	Adds etherpad.js plugin library for #39!
This commit is contained in:
		
							parent
							
								
									959fc08092
								
							
						
					
					
						commit
						77be1aa86e
					
				
							
								
								
									
										113
									
								
								js/etherpad.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								js/etherpad.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,113 @@ | ||||
| (function( $ ){ | ||||
| 
 | ||||
|   $.fn.pad = function( options ) { | ||||
|     var settings = { | ||||
|       'host'              : 'http://beta.etherpad.org', | ||||
|       'baseUrl'           : '/p/', | ||||
|       'showControls'      : false, | ||||
|       'showChat'          : false, | ||||
|       'showLineNumbers'   : false, | ||||
|       'userName'          : 'unnamed', | ||||
|       'lang'              : '', | ||||
|       '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', | ||||
|       'plugins'           : {}, | ||||
|       'rtl'               : false | ||||
|     }; | ||||
|      | ||||
|     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 pluginParams = ''; | ||||
|       for(var option in settings.plugins) { | ||||
|         pluginParams += '&' + option + '=' + settings.plugins[option] | ||||
|       } | ||||
| 
 | ||||
|       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; | ||||
|           if (settings.lang) { | ||||
|             iFrameLink = iFrameLink + '&lang=' + settings.lang; | ||||
|           } | ||||
|           iFrameLink = iFrameLink + '&noColors=' + settings.noColors; | ||||
|           iFrameLink = iFrameLink + '&userColor=' + settings.userColor; | ||||
|           iFrameLink = iFrameLink + '&hideQRCode=' + settings.hideQRCode; | ||||
|           iFrameLink = iFrameLink + '&alwaysShowChat=' + settings.alwaysShowChat; | ||||
|           iFrameLink = iFrameLink + '&rtl=' + settings.rtl; | ||||
|           iFrameLink = iFrameLink + pluginParams; | ||||
|           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 ); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user