diff --git a/images/grippie.png b/images/grippie.png new file mode 100644 index 00000000..6524d416 Binary files /dev/null and b/images/grippie.png differ diff --git a/jquery-wmd-plugin.js b/jquery-wmd-plugin.js index 0cd2065c..e4ed755e 100644 --- a/jquery-wmd-plugin.js +++ b/jquery-wmd-plugin.js @@ -1,4 +1,4 @@ -/* +/* * jQuery wmd plugin. */ diff --git a/jquery.textarearesizer.js b/jquery.textarearesizer.js new file mode 100644 index 00000000..55b61981 --- /dev/null +++ b/jquery.textarearesizer.js @@ -0,0 +1,77 @@ +/* + jQuery TextAreaResizer plugin + Created on 17th January 2008 by Ryan O'Dell + Version 1.0.4 + + Converted from Drupal -> textarea.js + Found source: http://plugins.jquery.com/misc/textarea.js + $Id: textarea.js,v 1.11.2.1 2007/04/18 02:41:19 drumm Exp $ + + 1.0.1 Updates to missing global 'var', added extra global variables, fixed multiple instances, improved iFrame support + 1.0.2 Updates according to textarea.focus + 1.0.3 Further updates including removing the textarea.focus and moving private variables to top + 1.0.4 Re-instated the blur/focus events, according to information supplied by dec + + +*/ +(function($) { + /* private variable "oHover" used to determine if you're still hovering over the same element */ + var textarea, staticOffset; // added the var declaration for 'staticOffset' thanks to issue logged by dec. + var iLastMousePos = 0; + var iMin = 32; + var grip; + /* TextAreaResizer plugin */ + $.fn.TextAreaResizer = function() { + return this.each(function() { + textarea = $(this).addClass('processed'), staticOffset = null; + + // 18-01-08 jQuery bind to pass data element rather than direct mousedown - Ryan O'Dell + // When wrapping the text area, work around an IE margin bug. See: + // http://jaspan.com/ie-inherited-margin-bug-form-elements-and-haslayout + $(this).wrap('
You can also add a title, which will be displayed as a tool tip.
" + - "Example:
http://wmd-editor.com/images/cloud1.jpg \"Optional title\"
输入图片地址:
" + + "您还可以为图片添加一个 tip ,即 img 元素的 alt 属性。
" + + "示例:
http://wmd-editor.com/images/cloud1.jpg \"可选标题\"
Enter the web address.
" + - "You can also add a title, which will be displayed as a tool tip.
" + - "Example:
http://wmd-editor.com/ \"Optional title\"
输入 Web 地址:
" + + "您还可以添加一个标题,即 a 元素的 title 属性。
" + + "示例:
http://wmd-editor.com/ \"可选标题\"
Ctrl+Q", command.doBlockquote); - var codeButton = addButton("wmd-code-button", "Code SampleCtrl+K", command.doCode); - var imageButton = addButton("wmd-image-button", "ImageCtrl+G", function(chunk, postProcessing, useDefaultText) { + var quoteButton = addButton("wmd-quote-button", "引用
Ctrl+Q", command.doBlockquote); + var codeButton = addButton("wmd-code-button", "代码片段Ctrl+K", command.doCode); + var imageButton = addButton("wmd-image-button", "图片Ctrl+G", function(chunk, postProcessing, useDefaultText) { return command.doLinkOrImage(chunk, postProcessing, true); }); var spacer2 = addSpacer(); - var olistButton = addButton("wmd-olist-button", "Numbered List
Ctrl+O", function(chunk, postProcessing, useDefaultText) { + var olistButton = addButton("wmd-olist-button", "数字列表
Ctrl+O", function(chunk, postProcessing, useDefaultText) { command.doList(chunk, postProcessing, true, useDefaultText); }); - var ulistButton = addButton("wmd-ulist-button", "Bulleted List
Ctrl+U", function(chunk, postProcessing, useDefaultText) { + var ulistButton = addButton("wmd-ulist-button", "普通列表
Ctrl+U", function(chunk, postProcessing, useDefaultText) { command.doList(chunk, postProcessing, false, useDefaultText); }); - var headingButton = addButton("wmd-heading-button", "Heading
/
Ctrl+H", command.doHeading); - var hrButton = addButton("wmd-hr-button", "Horizontal Rule
Ctrl+R", command.doHorizontalRule); + var headingButton = addButton("wmd-heading-button", "标题/
Ctrl+H", command.doHeading); + var hrButton = addButton("wmd-hr-button", "分隔线
Ctrl+R", command.doHorizontalRule); var spacer3 = addSpacer(); - var undoButton = addButton("wmd-undo-button", "Undo - Ctrl+Z"); + var undoButton = addButton("wmd-undo-button", "撤消 - Ctrl+Z"); undoButton.execute = function(manager){ manager.undo(); }; var redo_title = null; - var redoButton = addButton("wmd-redo-button", "Redo - Ctrl+Y"); + var redoButton = addButton("wmd-redo-button", "重做 - Ctrl+Y"); if (/win/.test(nav.platform.toLowerCase())) { - redoButton.title = "Redo - Ctrl+Y"; + redoButton.title = "重做 - Ctrl+Y"; } else { // mac and other non-Windows platforms - redoButton.title = "Redo - Ctrl+Shift+Z"; + redoButton.title = "重做 - Ctrl+Shift+Z"; } redoButton.execute = function(manager){ manager.redo(); diff --git a/jquery.wmd.min.js b/jquery.wmd.min.js index 3bd2ee83..b7e7f244 100644 --- a/jquery.wmd.min.js +++ b/jquery.wmd.min.js @@ -1,8 +1,7 @@ - -(function($){var counter=0;$.fn.wmd=function(_options){this.each(function(){var defaults={"preview":true};var options=$.extend({},_options||{},defaults);if(!options.button_bar){options.button_bar="wmd-button-bar-"+counter;$("").attr("class","wmd-button-bar").attr("id",options.button_bar).insertBefore(this);} +(function($){var counter=0;$.fn.wmd=function(_options){this.each(function(){var defaults={"preview":true};var options=$.extend({},_options||{},defaults);if(!options.button_bar){options.button_bar="wmd-button-bar-"+counter;$("").attr("class","wmd-button-bar").attr("id",options.button_bar).insertBefore(this);} if(typeof(options.preview)=="boolean"&&options.preview){options.preview="wmd-preview-"+counter;$("").attr("class","wmd-preview").attr("id",options.preview).insertAfter(this);} if(typeof(options.output)=="boolean"&&options.output){options.output="wmd-output-"+counter;$("").attr("class","wmd-output").attr("id",options.output).insertAfter(this);} -this.id=this.id||"wmd-input-"+counter;options.input=this.id;setup_wmd(options);counter++;});};})(jQuery);;(function(){WMDEditor=function(options){this.options=WMDEditor.util.extend({},WMDEditor.defaults,options||{});wmdBase(this,this.options);this.startEditor();};top.WMDEditor=WMDEditor;WMDEditor.defaults={version:2.0,output_format:"markdown",lineLength:40,button_bar:"wmd-button-bar",preview:"wmd-preview",output:"wmd-output",input:"wmd-input",imageDialogText:"Enter the image URL.
"+"You can also add a title, which will be displayed as a tool tip.
"+"Example:
",linkDialogText:"
http://wmd-editor.com/images/cloud1.jpg \"Optional title\"Enter the web address.
"+"You can also add a title, which will be displayed as a tool tip.
"+"Example:
",imageDefaultText:"http://",linkDefaultText:"http://",imageDirectory:"images/",helpLink:"http://wmd-editor.com/",helpHoverTitle:"WMD website",helpTarget:"_blank",previewPollInterval:500,pastePollInterval:100,buttons:"bold italic link blockquote code image ol ul heading hr"};WMDEditor.prototype={getPanels:function(){return{buttonBar:doc.getElementById(this.options.button_bar),preview:doc.getElementById(this.options.preview),output:doc.getElementById(this.options.output),input:doc.getElementById(this.options.input)};},startEditor:function(){this.panels=this.getPanels();this.previewMgr=new PreviewManager(this);edit=new this.editor(this.previewMgr.refresh);this.previewMgr.refresh(true);}};var util={isVisible:function(elem){return elem.offsetWidth>0||elem.offsetHeight>0;},addEvent:function(elem,event,listener){if(elem.attachEvent){elem.attachEvent("on"+event,listener);} +this.id=this.id||"wmd-input-"+counter;options.input=this.id;setup_wmd(options);counter++;});};})(jQuery);;(function(){WMDEditor=function(options){this.options=WMDEditor.util.extend({},WMDEditor.defaults,options||{});wmdBase(this,this.options);this.startEditor();};top.WMDEditor=WMDEditor;WMDEditor.defaults={version:2.0,output_format:"markdown",lineLength:40,button_bar:"wmd-button-bar",preview:"wmd-preview",output:"wmd-output",input:"wmd-input",imageDialogText:"
http://wmd-editor.com/ \"Optional title\"输入图片地址:
"+"您还可以为图片添加一个 tip ,即 alt 属性。
"+"示例:
",linkDialogText:"
http://wmd-editor.com/images/cloud1.jpg \"可选标题\"输入 Web 地址:
"+"您还可以添加一个标题,即 a 元素的 title 属性。
"+"示例:
",imageDefaultText:"http://",linkDefaultText:"http://",imageDirectory:"images/",helpLink:"http://wmd-editor.com/",helpHoverTitle:"WMD website",helpTarget:"_blank",previewPollInterval:500,pastePollInterval:100,buttons:"bold italic link blockquote code image ol ul heading hr"};WMDEditor.prototype={getPanels:function(){return{buttonBar:doc.getElementById(this.options.button_bar),preview:doc.getElementById(this.options.preview),output:doc.getElementById(this.options.output),input:doc.getElementById(this.options.input)};},startEditor:function(){this.panels=this.getPanels();this.previewMgr=new PreviewManager(this);edit=new this.editor(this.previewMgr.refresh);this.previewMgr.refresh(true);}};var util={isVisible:function(elem){return elem.offsetWidth>0||elem.offsetHeight>0;},addEvent:function(elem,event,listener){if(elem.attachEvent){elem.attachEvent("on"+event,listener);} else{elem.addEventListener(event,listener,false);}},removeEvent:function(elem,event,listener){if(elem.detachEvent){elem.detachEvent("on"+event,listener);} else{elem.removeEventListener(event,listener,false);}},fixEolChars:function(text){text=text.replace(/\r\n/g,"\n");text=text.replace(/\r/g,"\n");return text;},extendRegExp:function(regex,pre,post){if(pre===null||pre===undefined) {pre="";} @@ -99,7 +98,7 @@ return;}};var handleModeChange=function(event){if(!event.ctrlKey&&!event.metaKey else if(keyCode==8||keyCode==46||keyCode==127){setMode("deleting");} else if(keyCode==13){setMode("newlines");} else if(keyCode==27){setMode("escape");} -else if((keyCode<16||keyCode>20)&&keyCode!=91){setMode("typing");}}};var setEventHandlers=function(){util.addEvent(textarea,"keypress",function(event){if((event.ctrlKey||event.metaKey)&&(event.keyCode==89||event.keyCode==90)){event.preventDefault();}});var handlePaste=function(){if(browser.isIE||(inputStateObj&&inputStateObj.text!=textarea.value)){if(timer==undefined){mode="paste";saveState();refreshState();}}};poller=new InputPoller(textarea,handlePaste,pastePollInterval);util.addEvent(textarea,"keydown",handleCtrlYZ);util.addEvent(textarea,"keydown",handleModeChange);util.addEvent(textarea,"mousedown",function(){setMode("moving");});textarea.onpaste=handlePaste;textarea.ondrop=handlePaste;};var init=function(){setEventHandlers();refreshState();saveState();};this.destroy=function(){if(poller){poller.destroy();}};init();};WMDEditor.util=util;WMDEditor.position=position;WMDEditor.TextareaState=TextareaState;WMDEditor.Checks=Checks;WMDEditor.InputPoller=InputPoller;WMDEditor.PreviewManager=PreviewManager;WMDEditor.UndoManager=UndoManager;var doc=top.document;var re=top.RegExp;var nav=top.navigator;function get_browser(){var b={};b.isIE=/msie/.test(nav.userAgent.toLowerCase());b.isIE_5or6=/msie 6/.test(nav.userAgent.toLowerCase())||/msie 5/.test(nav.userAgent.toLowerCase());b.isIE_7plus=b.isIE&&!b.isIE_5or6;b.isOpera=/opera/.test(nav.userAgent.toLowerCase());b.isKonqueror=/konqueror/.test(nav.userAgent.toLowerCase());return b;} +else if((keyCode<16||keyCode>20)&&keyCode!=91){setMode("typing");}}};var setEventHandlers=function(){util.addEvent(textarea,"keypress",function(event){if((event.ctrlKey||event.metaKey)&&(event.keyCode==89||event.keyCode==90)){event.preventDefault();}});var handlePaste=function(){if(browser.isIE||(inputStateObj&&inputStateObj.text!=textarea.value)){if(timer==undefined){mode="paste";saveState();refreshState();}}};poller=new InputPoller(textarea,handlePaste,pastePollInterval);util.addEvent(textarea,"keydown",handleCtrlYZ);util.addEvent(textarea,"keydown",handleModeChange);util.addEvent(textarea,"mousedown",function(){setMode("moving");});textarea.onpaste=handlePaste;textarea.ondrop=handlePaste;};var init=function(){setEventHandlers();refreshState();saveState();};this.destroy=function(){if(poller){poller.destroy();}};init();};WMDEditor.util=util;WMDEditor.position=position;WMDEditor.TextareaState=TextareaState;WMDEditor.Chunks=Chunks;WMDEditor.InputPoller=InputPoller;WMDEditor.PreviewManager=PreviewManager;WMDEditor.UndoManager=UndoManager;var doc=top.document;var re=top.RegExp;var nav=top.navigator;function get_browser(){var b={};b.isIE=/msie/.test(nav.userAgent.toLowerCase());b.isIE_5or6=/msie 6/.test(nav.userAgent.toLowerCase())||/msie 5/.test(nav.userAgent.toLowerCase());b.isIE_7plus=b.isIE&&!b.isIE_5or6;b.isOpera=/opera/.test(nav.userAgent.toLowerCase());b.isKonqueror=/konqueror/.test(nav.userAgent.toLowerCase());return b;} var browser=get_browser();var wmdBase=function(wmd,wmd_options){wmd.Command={};wmd.Global={};wmd.buttons={};wmd.showdown=top.Attacklab&&top.Attacklab.showdown;var util=WMDEditor.util;var position=WMDEditor.position;var command=wmd.Command;wmd.ieCachedRange=null;wmd.ieRetardedClick=false;wmd.editor=function(previewRefreshCallback){if(!previewRefreshCallback){previewRefreshCallback=function(){};} var inputBox=wmd.panels.input;var offsetHeight=0;var editObj=this;var mainDiv;var mainSpan;var div;var creationHandle;var undoMgr;var doClick=function(button){inputBox.focus();if(button.textOp){if(undoMgr){undoMgr.setCommandMode();} var state=new TextareaState(wmd.panels.input);if(!state){return;} @@ -115,9 +114,9 @@ buttonRow=buttonBar.appendChild(buttonRow);var xoffset=0;function createButton(n button.title=title;if(textOp) button.textOp=textOp;return button;} function addButton(name,title,textOp){var button=createButton(name,title,textOp);setupButton(button,true);buttonRow.appendChild(button);return button;} -function addSpacer(){var spacer=document.createElement("li");spacer.className="wmd-spacer";buttonRow.appendChild(spacer);return spacer;} -var boldButton=addButton("wmd-bold-button","Strong Ctrl+B",command.doBold);var italicButton=addButton("wmd-italic-button","Emphasis Ctrl+I",command.doItalic);var spacer1=addSpacer();var linkButton=addButton("wmd-link-button","Hyperlink Ctrl+L",function(chunk,postProcessing,useDefaultText){return command.doLinkOrImage(chunk,postProcessing,false);});var quoteButton=addButton("wmd-quote-button","Blockquote
http://wmd-editor.com/ \"可选标题\"Ctrl+Q",command.doBlockquote);var codeButton=addButton("wmd-code-button","Code SampleCtrl+K",command.doCode);var imageButton=addButton("wmd-image-button","ImageCtrl+G",function(chunk,postProcessing,useDefaultText){return command.doLinkOrImage(chunk,postProcessing,true);});var spacer2=addSpacer();var olistButton=addButton("wmd-olist-button","Numbered List
Ctrl+O",function(chunk,postProcessing,useDefaultText){command.doList(chunk,postProcessing,true,useDefaultText);});var ulistButton=addButton("wmd-ulist-button","Bulleted List
Ctrl+U",function(chunk,postProcessing,useDefaultText){command.doList(chunk,postProcessing,false,useDefaultText);});var headingButton=addButton("wmd-heading-button","Heading
/
Ctrl+H",command.doHeading);var hrButton=addButton("wmd-hr-button","Horizontal Rule
Ctrl+R",command.doHorizontalRule);var spacer3=addSpacer();var undoButton=addButton("wmd-undo-button","Undo - Ctrl+Z");undoButton.execute=function(manager){manager.undo();};var redo_title=null;var redoButton=addButton("wmd-redo-button","Redo - Ctrl+Y");if(/win/.test(nav.platform.toLowerCase())){redoButton.title="Redo - Ctrl+Y";} -else{redoButton.title="Redo - Ctrl+Shift+Z";} +var spacerIndex = 0;function addSpacer(){var spacer=document.createElement("li");switch(spacerIndex){case 0:spacer.className = "wmd-spacer wmd-spacer1";break;case 1:spacer.className = "wmd-spacer wmd-spacer2";break;case 2:spacer.className = "wmd-spacer wmd-spacer3";break;}buttonRow.appendChild(spacer);spacerIndex=spacerIndex+1;return spacer;} +var boldButton=addButton("wmd-bold-button","粗体 Ctrl+B",command.doBold);var italicButton=addButton("wmd-italic-button","斜体 Ctrl+I",command.doItalic);var spacer1=addSpacer();var linkButton=addButton("wmd-link-button","链接 Ctrl+L",function(chunk,postProcessing,useDefaultText){return command.doLinkOrImage(chunk,postProcessing,false);});var quoteButton=addButton("wmd-quote-button","引用Ctrl+Q",command.doBlockquote);var codeButton=addButton("wmd-code-button","代码片段Ctrl+K",command.doCode);var imageButton=addButton("wmd-image-button","图片Ctrl+G",function(chunk,postProcessing,useDefaultText){return command.doLinkOrImage(chunk,postProcessing,true);});var spacer2=addSpacer();var olistButton=addButton("wmd-olist-button","数字列表
Ctrl+O",function(chunk,postProcessing,useDefaultText){command.doList(chunk,postProcessing,true,useDefaultText);});var ulistButton=addButton("wmd-ulist-button","普通列表
Ctrl+U",function(chunk,postProcessing,useDefaultText){command.doList(chunk,postProcessing,false,useDefaultText);});var headingButton=addButton("wmd-heading-button","标题
/
Ctrl+H",command.doHeading);var hrButton=addButton("wmd-hr-button","分隔线
Ctrl+R",command.doHorizontalRule);var spacer3=addSpacer();var undoButton=addButton("wmd-undo-button","撤消 - Ctrl+Z");undoButton.execute=function(manager){manager.undo();};var redo_title=null;var redoButton=addButton("wmd-redo-button","重做 - Ctrl+Y");if(/win/.test(nav.platform.toLowerCase())){redoButton.title="重做 - Ctrl+Y";} +else{redoButton.title="重做 - Ctrl+Shift+Z";} redoButton.execute=function(manager){manager.redo();};var helpButton=createButton("wmd-help-button");helpButton.isHelp=true;setupButton(helpButton,true);buttonRow.appendChild(helpButton);var helpAnchor=document.createElement("a");helpAnchor.href=wmd_options.helpLink;helpAnchor.target=wmd_options.helpTarget helpAnchor.title=wmd_options.helpHoverTitle;helpButton.appendChild(helpAnchor);setUndoRedoButtonStates();} var setupEditor=function(){if(/\?noundo/.test(doc.location.href)){wmd.nativeUndo=true;} diff --git a/wmd-test.html b/wmd-test.html index 0f455891..21eb85d2 100644 --- a/wmd-test.html +++ b/wmd-test.html @@ -1,4 +1,4 @@ - + @@ -6,26 +6,38 @@ - + + +- -- -- + + +diff --git a/wmd.css b/wmd.css index 0367c2cf..906e1d06 100644 --- a/wmd.css +++ b/wmd.css @@ -1,3 +1,5 @@ +textarea,input{outline:none;} +textarea{resize: none; font-size:14px; line-height:22px;} .wmd-panel { @@ -30,7 +32,14 @@ .wmd-preview { - background-color: LightGray; + background-color: #eee; + border:2px dotted #ccc; + min-height:10px; + _height:10px; + width:100%; + margin-top:10px; + font-size:14px; + line-height:22px; } .wmd-output diff --git a/wmd.js b/wmd.js index 79872132..d65d60a6 100644 --- a/wmd.js +++ b/wmd.js @@ -1,4 +1,4 @@ -;(function() { +;(function() { WMDEditor = function(options) { this.options = WMDEditor.util.extend({}, WMDEditor.defaults, options || {});