parent
							
								
									fc7cd03b96
								
							
						
					
					
						commit
						ac743ca17f
					
				|  | @ -0,0 +1,319 @@ | |||
| /* start icon */ | ||||
| 
 | ||||
| @font-face { | ||||
|     font-family: 'icomoon'; | ||||
|     src: url('fonts/icomoon.eot?35cb2z'); | ||||
|     src: url('fonts/icomoon.eot?#iefix35cb2z') format('embedded-opentype'), url('fonts/icomoon.woff?35cb2z') format('woff'), url('fonts/icomoon.ttf?35cb2z') format('truetype'), url('fonts/icomoon.svg?35cb2z#icomoon') format('svg'); | ||||
|     font-weight: normal; | ||||
|     font-style: normal; | ||||
| } | ||||
| .font-ico { | ||||
|     font-family: 'icomoon'; | ||||
|     /* Better Font Rendering =========== */ | ||||
|      | ||||
|     -webkit-font-smoothing: antialiased; | ||||
|     -moz-osx-font-smoothing: grayscale; | ||||
|     color: #666; | ||||
|     cursor: pointer; | ||||
|     font-size: 13px; | ||||
|     line-height: 18px; | ||||
| } | ||||
| .font-ico:hover { | ||||
|     color: #333; | ||||
| } | ||||
| .ico-play:before { | ||||
|     content: "\e605"; | ||||
| } | ||||
| .ico-save:before { | ||||
|     content: "\f0c7"; | ||||
| } | ||||
| .ico-max:before { | ||||
|     content: "\f096"; | ||||
| } | ||||
| .ico-format:before { | ||||
|     content: "\e60b"; | ||||
| } | ||||
| .ico-buildrun:before { | ||||
|     content: "\e607"; | ||||
| } | ||||
| .ico-stop:before { | ||||
|     content: "\e608"; | ||||
| } | ||||
| .ico-restore:before { | ||||
|     content: "\e60c"; | ||||
| } | ||||
| .ico-min:before { | ||||
|     content: "\e60d"; | ||||
|     position: absolute; | ||||
|     right: 5px; | ||||
| } | ||||
| .ico-close:before { | ||||
|     content: "\e60a"; | ||||
| } | ||||
| /* end ico */ | ||||
| /* start frame */ | ||||
| 
 | ||||
| .frame { | ||||
|     position: absolute; | ||||
|     border: 1px solid #5F5F5F; | ||||
|     background-color: #F8F8F8; | ||||
|     width: 320px; | ||||
|     z-index: 21; | ||||
|     display: none; | ||||
| } | ||||
| .frame li { | ||||
|     padding: 0 5px; | ||||
|     line-height: 25px; | ||||
|     cursor: pointer; | ||||
| } | ||||
| .frame li.disabled { | ||||
|     color: #999; | ||||
| } | ||||
| .frame li:hover { | ||||
|     background-color: #3875D7; | ||||
|     color: #FFF; | ||||
| } | ||||
| .frame li.disabled:hover { | ||||
|     background-color: #F8F8F8; | ||||
|     color: #999; | ||||
| } | ||||
| .frame a { | ||||
|     color: #000; | ||||
|     text-decoration: none; | ||||
| } | ||||
| .frame li:hover a, | ||||
| .frame a:hover { | ||||
|     color: #FFF; | ||||
| } | ||||
| .frame .hr { | ||||
|     background-color: #bdbdbd; | ||||
|     height: 1px; | ||||
|     margin: 0 1px; | ||||
| } | ||||
| /* end frame */ | ||||
| /* start tabs */ | ||||
| 
 | ||||
| .tabs { | ||||
|     height: 20px; | ||||
|     overflow: hidden; | ||||
|     width: 100%; | ||||
|     background-color: #E6E6E6; | ||||
|     border-top: 1px solid #A4A4A4; | ||||
|     border-bottom: 1px solid #9D9D9D; | ||||
| } | ||||
| .tabs > div { | ||||
|     float: left; | ||||
|     line-height: 18px; | ||||
|     height: 18px; | ||||
|     padding: 0 5px; | ||||
|     cursor: pointer; | ||||
|     background-color: #DDD; | ||||
|     color: #8B8B8B; | ||||
|     border-right: 1px solid #ADADAD; | ||||
| } | ||||
| .tabs > div.current { | ||||
|     background-color: #9F9F9F; | ||||
|     color: #FFF; | ||||
| } | ||||
| /* end tabs */ | ||||
| /* start framework */ | ||||
| 
 | ||||
| .content { | ||||
|     position: relative; | ||||
|     overflow: hidden; | ||||
| } | ||||
| /* end framework */ | ||||
| /* start menu */ | ||||
| 
 | ||||
| .menu { | ||||
|     background-color: #F0F0F0; | ||||
|     height: 24px; | ||||
| } | ||||
| .menu > ul > li { | ||||
|     float: left; | ||||
| } | ||||
| .menu > ul > li > span { | ||||
|     color: #000; | ||||
|     font-size: 12px; | ||||
|     line-height: 24px; | ||||
|     padding: 5px; | ||||
|     text-decoration: none; | ||||
|     cursor: pointer; | ||||
| } | ||||
| /* end menu */ | ||||
| /* start editor */ | ||||
| 
 | ||||
| .edit-panel { | ||||
|     width: 80%; | ||||
|     position: absolute; | ||||
|     left: 20%; | ||||
|     width: 80%; | ||||
|     height: 70%; | ||||
|     overflow: hidden; | ||||
| } | ||||
| .edit-panel .tabs > div { | ||||
|     background-color: #d1d1d1; | ||||
|     border-right-color: #9b9b9b; | ||||
|     color: #333; | ||||
|     cursor: auto; | ||||
| } | ||||
| .edit-panel .tabs > div.current { | ||||
|     background-color: #F7F7F7; | ||||
| } | ||||
| .toolbars { | ||||
|     position: absolute; | ||||
|     right: 5px; | ||||
|     top: 1px; | ||||
| } | ||||
| .edit-panel .tabs .ico { | ||||
|     background-image: url("../images/ico-file.png"); | ||||
|     float: left; | ||||
|     height: 16px; | ||||
|     margin: 2px 0 0 -2px; | ||||
|     width: 16px; | ||||
| } | ||||
| /* 统一为 static/js/lib/codemirror-4.5/addon/hint/show-hint.css 中的.CodeMirror-hints */ | ||||
| 
 | ||||
| .edit-exprinfo { | ||||
|     position: absolute; | ||||
|     z-index: 10; | ||||
|     overflow: hidden; | ||||
|     list-style: none; | ||||
|     margin: 0; | ||||
|     padding: 2px; | ||||
|     -webkit-box-shadow: 2px 3px 5px rgba(0, 0, 0, .2); | ||||
|     -moz-box-shadow: 2px 3px 5px rgba(0, 0, 0, .2); | ||||
|     box-shadow: 2px 3px 5px rgba(0, 0, 0, .2); | ||||
|     border-radius: 3px; | ||||
|     border: 1px solid silver; | ||||
|     background: white; | ||||
|     font-size: 90%; | ||||
|     font-family: Consolas, Courier New, monospace; | ||||
|     max-height: 20em; | ||||
|     overflow-y: auto; | ||||
| } | ||||
| .CodeMirror, | ||||
| .CodeMirror-hints { | ||||
|     font-family: Consolas, Courier New, monospace; | ||||
| } | ||||
| .CodeMirror-focused .cm-matchhighlight { | ||||
|     background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==); | ||||
|     background-position: bottom; | ||||
|     background-repeat: repeat-x; | ||||
| } | ||||
| .CodeMirror-hint { | ||||
|     padding-right: 18px; | ||||
|     max-width: none; | ||||
| } | ||||
| .CodeMirror-hint:hover { | ||||
|     background: #08f; | ||||
|     color: white; | ||||
| } | ||||
| /* end editor */ | ||||
| /* start bottom-window-group */ | ||||
| 
 | ||||
| .bottom-window-group { | ||||
|     width: 80%; | ||||
|     position: absolute; | ||||
|     left: 20%; | ||||
|     width: 80%; | ||||
|     height: 30%; | ||||
|     top: 70%; | ||||
|     z-index: 7; | ||||
|     background-color: #fff; | ||||
| } | ||||
| .bottom-window-group-max { | ||||
|     height: 100%; | ||||
|     left: 0; | ||||
|     top: 0; | ||||
|     width: 100%; | ||||
|     z-index: 11; | ||||
| } | ||||
| .bottom-window-group > div > div { | ||||
|     overflow: auto; | ||||
| } | ||||
| .bottom-window-group .output { | ||||
|     font-family: Consolas, Courier New, monospace; | ||||
|     padding: 0 5px; | ||||
|     line-height: 16px; | ||||
|     font-size: 12px; | ||||
| } | ||||
| .bottom-window-group .output pre { | ||||
|     margin: 0; | ||||
| } | ||||
| .bottom-window-group .output .start-build, | ||||
| .bottom-window-group .output .start-test, | ||||
| .bottom-window-group .output .start-install, | ||||
| .bottom-window-group .output .start-get { | ||||
|     color: #999; | ||||
| } | ||||
| .bottom-window-group .output .build-succ, | ||||
| .bottom-window-group .output .test-succ, | ||||
| .bottom-window-group .output .install-succ, | ||||
| .bottom-window-group .output .get-succ { | ||||
|     color: rgb(0, 153, 0); | ||||
| } | ||||
| .bottom-window-group .output .build-error, | ||||
| .bottom-window-group .output .test-error, | ||||
| .bottom-window-group .output .install-error, | ||||
| .bottom-window-group .output .get-error { | ||||
|     color: red; | ||||
| } | ||||
| .bottom-window-group table { | ||||
|     width: 100%; | ||||
| } | ||||
| .bottom-window-group td { | ||||
|     border-bottom: 1px solid #DDD; | ||||
|     line-height: 20px; | ||||
| } | ||||
| .bottom-window-group .notification .type, | ||||
| .bottom-window-group .notification .severity { | ||||
|     width: 50px; | ||||
|     padding: 0 5px; | ||||
| } | ||||
| .bottom-window-group .search li { | ||||
|     cursor: pointer; | ||||
|     line-height: 20px; | ||||
|     padding: 0 3px; | ||||
|     word-wrap: normal; | ||||
|     word-break: normal; | ||||
|     white-space: nowrap; | ||||
|     overflow: hidden; | ||||
|     text-overflow: ellipsis; | ||||
| } | ||||
| .bottom-window-group .search li.selected { | ||||
|     background-color: #3875d7; | ||||
|     color: #FFF; | ||||
| } | ||||
| .bottom-window-group .search .path { | ||||
|     color: #999; | ||||
|     font-size: 12px; | ||||
| } | ||||
| .bottom-window-group .search li.selected .path { | ||||
|     color: #FFF; | ||||
| } | ||||
| /* end bottom-window-group */ | ||||
| /* start footer */ | ||||
| 
 | ||||
| .footer { | ||||
|     border-top: 1px solid #919191; | ||||
|     background-color: #F0F0F0; | ||||
|     padding-left: 5px; | ||||
|     height: 19px; | ||||
|     line-height: 18px; | ||||
| } | ||||
| .footer .cursor { | ||||
|     cursor: pointer; | ||||
| } | ||||
| .notification-count { | ||||
|     float: right; | ||||
|     display: none; | ||||
|     cursor: pointer; | ||||
|     background-color: red; | ||||
|     color: #FFF; | ||||
|     margin: 1px 5px; | ||||
|     padding: 0 2px; | ||||
|     border-radius: 3px; | ||||
|     line-height: 16px; | ||||
| } | ||||
| /* end footer */ | ||||
|  | @ -0,0 +1,333 @@ | |||
| <!DOCTYPE html> | ||||
| <html> | ||||
| 
 | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <title>{{.i18n.wide}}</title> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/codemirror.css"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/hint/show-hint.css"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/lint/lint.css"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/fold/foldgutter.css"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/dialog/dialog.css"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/overwrite/codemirror/theme/wide.css"> | ||||
| 
 | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/js/lib/ztree/zTreeStyle.css"> | ||||
| 
 | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/css/dialog.css?{{.conf.StaticResourceVersion}}"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/css/base.css?{{.conf.StaticResourceVersion}}"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/css/base-{{.conf.Locale}}.css?{{.conf.StaticResourceVersion}}"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/css/wide.css?{{.conf.StaticResourceVersion}}"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/css/side.css?{{.conf.StaticResourceVersion}}"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/css/start.css?{{.conf.StaticResourceVersion}}"> | ||||
|     <link rel="stylesheet" href="{{.conf.StaticServer}}/static/css/about.css?{{.conf.StaticResourceVersion}}"> | ||||
| 
 | ||||
|     <link rel="icon" type="image/x-icon" href="/favicon.ico" /> | ||||
| </head> | ||||
| 
 | ||||
| <body> | ||||
|     <!-- 主菜单 --> | ||||
|     <div class="menu fn-clear"> | ||||
|         <ul class="fn-cleaer"> | ||||
|             <li> | ||||
|                 <span>{{.i18n.file}}</span> | ||||
|                 <div class="frame"> | ||||
|                     <ul> | ||||
|                         <li class="save-all disabled" onclick="wide.saveAllFiles()"> | ||||
|                             <span>{{.i18n.save_all_files}}</span> | ||||
|                         </li> | ||||
|                         <li class="close-all disabled" onclick="wide.closeAllFiles()"> | ||||
|                             <span>{{.i18n.close_all_files}}</span> | ||||
|                         </li> | ||||
|                         <li class="hr"></li> | ||||
|                         <li onclick="wide.exit()"> | ||||
|                             <span>{{.i18n.exit}}</span> | ||||
|                         </li> | ||||
|                     </ul> | ||||
|                 </div> | ||||
|             </li> | ||||
|             <li> | ||||
|                 <span>{{.i18n.run}}</span> | ||||
|                 <div class="frame"> | ||||
|                     <ul> | ||||
|                         <li class="build disabled" onclick="wide.build()"> | ||||
|                             <span>{{.i18n.build}}</span> | ||||
|                         </li> | ||||
|                         <li class="run disabled" onclick="wide.run()"> | ||||
|                             <span>{{.i18n.build_n_run}}</span> | ||||
|                         </li> | ||||
|                         <li class="hr"></li> | ||||
|                         <li class="go-test disabled" onclick="wide.test()"> | ||||
|                             <span>{{.i18n.test}}</span> | ||||
|                         </li> | ||||
|                         <li class="hr"></li> | ||||
|                         <li class="go-get disabled" onclick="wide.goget()"> | ||||
|                             <span>{{.i18n.goget}}</span> | ||||
|                         </li> | ||||
|                         <li class="go-install disabled" onclick="wide.goinstall()"> | ||||
|                             <span>{{.i18n.goinstall}}</span> | ||||
|                         </li> | ||||
|                     </ul> | ||||
|                 </div> | ||||
|             </li> | ||||
|             <!-- | ||||
|                 <li> | ||||
|                     <span>{{.i18n.debug}}</span> | ||||
|                     <div class="frame"> | ||||
|                         <ul> | ||||
|                             <li> | ||||
|                                 <span>{{.i18n.debug}}</span> | ||||
|                             </li> | ||||
|                         </ul> | ||||
|                     </div> | ||||
|                 </li> | ||||
|                 --> | ||||
|             <li> | ||||
|                 <span>{{.i18n.team}}</span> | ||||
|                 <div class="frame"> | ||||
|                     <ul> | ||||
|                         <li class="signup" onclick="window.open('/signup')"> | ||||
|                             <span>{{.i18n.sign_up}}</span> | ||||
|                         </li> | ||||
|                     </ul> | ||||
|                 </div> | ||||
|             </li> | ||||
|             <li> | ||||
|                 <span>{{.i18n.help}}</span> | ||||
|                 <div class="frame"> | ||||
|                     <ul> | ||||
|                         <li onclick="window.open('https://www.gitbook.io/book/88250/wide-user-guide')"> | ||||
|                             <span>{{.i18n.wide_doc}}</span> | ||||
|                         </li> | ||||
|                         <li onclick="window.open('https://github.com/b3log/wide/issues/new')"> | ||||
|                             {{.i18n.report_issues}} | ||||
|                         </li> | ||||
|                         <li class="hr"></li> | ||||
|                         <li onclick="window.open('/keyboard_shortcuts')"> | ||||
|                             {{.i18n.keyboard_shortcuts}} | ||||
|                         </li> | ||||
|                         <li class="hr"></li> | ||||
|                         <li onclick="editors.openStartPage()"> | ||||
|                             <span>{{.i18n.start_page}}</span> | ||||
|                         </li> | ||||
|                         <li onclick="wide.openAbout()"> | ||||
|                             <span>{{.i18n.about}}</span> | ||||
|                         </li> | ||||
|                     </ul> | ||||
|                 </div> | ||||
|             </li> | ||||
|         </ul> | ||||
|     </div> | ||||
| 
 | ||||
|     <div class="content"> | ||||
|         <div class="side"> | ||||
|             <span title="{{.i18n.min}}" class="font-ico ico-min"></span> | ||||
|             <div class="tabs"> | ||||
|                 <div class="current" data-index="filreTree"> | ||||
|                     <span title="{{.i18n.file}}">{{.i18n.file}}</span> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="tabs-panel"> | ||||
|                 <div data-index="filreTree"> | ||||
|                     <ul id="files" tabindex="-1" class="ztree"></ul> | ||||
|                     <!-- 目录右键菜单 --> | ||||
|                     <div id="dirRMenu" class="frame"> | ||||
|                         <ul> | ||||
|                             <li onclick="tree.newFile();">{{.i18n.create_file}}</li> | ||||
|                             <li onclick="tree.newDir();">{{.i18n.create_dir}}</li> | ||||
|                             <li onclick="tree.removeIt();">{{.i18n.delete}}</li> | ||||
|                         </ul> | ||||
|                     </div> | ||||
| 
 | ||||
|                     <!-- 文件右键菜单 --> | ||||
|                     <div id="fileRMenu" class="frame"> | ||||
|                         <ul> | ||||
|                             <li onclick="tree.removeIt();">{{.i18n.delete}}</li> | ||||
|                         </ul> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
| 
 | ||||
|         <div class="edit-panel"> | ||||
|             <div class="toolbars fn-none"> | ||||
|                 <span onclick="wide.run()" class="font-ico ico-buildrun" title="{{.i18n.build_n_run}}"></span> | ||||
|                 <span onclick="wide.saveFile()" title="{{.i18n.save}}" class="font-ico ico-save"></span> | ||||
|                 <span onclick="wide.fmt(editors.getCurrentPath(), wide.curEditor)" class="ico-format font-ico" title="{{.i18n.format}}"></span> | ||||
|                 <span class="font-ico ico-max" onclick="windows.maxEditor()" title="{{.i18n.max_editor}}"></span> | ||||
|             </div> | ||||
|             <div class="tabs"></div> | ||||
|             <div class="tabs-panel"></div> | ||||
|         </div> | ||||
| 
 | ||||
|         <div class="bottom-window-group"> | ||||
|             <span title="{{.i18n.min}}" class="font-ico ico-min"></span> | ||||
|             <div class="tabs"> | ||||
|                 <div class="current" data-index="output"> | ||||
|                     <span title="{{.i18n.output}}">{{.i18n.output}}</span> | ||||
|                 </div> | ||||
|                 <div data-index="search"> | ||||
|                     <span title="{{.i18n.search}}">{{.i18n.search}}</span> | ||||
|                 </div> | ||||
|                 <div data-index="notification"> | ||||
|                     <span title="{{.i18n.notification}}">{{.i18n.notification}}</span> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="tabs-panel"> | ||||
|                 <div data-index="output"> | ||||
|                     <div class="output" tabindex="-1"> | ||||
|                         <div></div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|                 <div class="fn-none" data-index="search"> | ||||
|                     <div tabindex="-1" class="search"> | ||||
|                         <div class="tabs fn-none"> | ||||
|                             <div class="current" data-index="first"> | ||||
|                                 <span class="first"></span><span class="ico-close font-ico"></span> | ||||
|                             </div> | ||||
|                         </div> | ||||
|                         <div class="tabs-panel"> | ||||
|                             <div data-index="first"></div> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|                 <div class="fn-none" data-index="notification"> | ||||
|                     <div tabindex="-1" class="notification"> | ||||
|                         <table cellpadding="0" cellspacing="0"></table> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| 
 | ||||
|     <div class="footer fn-clear"> | ||||
|         <div class="fn-left"> | ||||
|             <span title="{{.i18n.restore_side}}" class="font-ico ico-restore fn-none"></span> | ||||
|             <span title="{{.i18n.restore_bottom}}" class="font-ico ico-restore fn-none"></span> | ||||
|         </div> | ||||
|         <div class="fn-right"> | ||||
|             <span class="cursor"></span> | ||||
|             <span class="notification-count" title="{{.i18n.unread_notification}}">{{.i18n.notification}}</span> | ||||
|         </div> | ||||
|     </div> | ||||
| 
 | ||||
|     <div id="dialogRemoveConfirm" class="fn-none"> | ||||
|         {{.i18n.isDelete}} <b></b>? | ||||
|     </div> | ||||
|     <div id="dialogAlert" class="fn-none"></div> | ||||
|     <div id="dialogAbout" class="fn-none"></div> | ||||
|     <div id="dialogNewFilePrompt" class="dialog-prompt fn-none"> | ||||
|         <input/> | ||||
|     </div> | ||||
|     <div id="dialogNewDirPrompt" class="dialog-prompt fn-none"> | ||||
|         <input/> | ||||
|     </div> | ||||
|     <div id="dialogGoLinePrompt" class="dialog-prompt fn-none"> | ||||
|         <input/> | ||||
|     </div> | ||||
|     <div id="dialogSearchForm" class="dialog-form fn-none"> | ||||
|         <input placeholder="{{.i18n.keyword}}" /> | ||||
|         <input placeholder="{{.i18n.file_format}}" /> | ||||
|     </div> | ||||
|     <script> | ||||
|         var config = { | ||||
|             "pathSeparator": { | ||||
|                 {.pathSeparator | ||||
|                 } | ||||
|             }, | ||||
|             "latestSessionContent": { | ||||
|                 {.latestSessionContent | ||||
|                 } | ||||
|             }, | ||||
|             "label": { | ||||
|                 "restore_editor": "{{.i18n.restore_editor}}", | ||||
|                 "max_editor": "{{.i18n.max_editor}}", | ||||
|                 "delete": "{{.i18n.delete}}", | ||||
|                 "cancel": "{{.i18n.cancel}}", | ||||
|                 "goto_line": "{{.i18n.goto_line}}", | ||||
|                 "go": "{{.i18n.go}}", | ||||
|                 "create": "{{.i18n.create}}", | ||||
|                 "create_file": "{{.i18n.create_file}}", | ||||
|                 "create_dir": "{{.i18n.create_dir}}", | ||||
|                 "tip": "{{.i18n.tip}}", | ||||
|                 "confirm": "{{.i18n.confirm}}", | ||||
|                 "build_n_run": "{{.i18n.build_n_run}}", | ||||
|                 "stop": "{{.i18n.stop}}", | ||||
|                 "find_usages": "{{.i18n.find_usages}}", | ||||
|                 "search_text": "{{.i18n.search_text}}", | ||||
|                 "search": "{{.i18n.search}}", | ||||
|                 "start_page": "{{.i18n.start_page}}", | ||||
|                 "confirm_save": "{{.i18n.confirm_save}}", | ||||
|                 "community": "{{.i18n.community}}", | ||||
|                 "about": "{{.i18n.about}}", | ||||
|                 "new_version_available": "{{.i18n.new_version_available}}", | ||||
|                 "colon": "{{.i18n.colon}}", | ||||
|                 "uptodate": "{{.i18n.uptodate}}" | ||||
|             }, | ||||
|             "channel": { | ||||
|                 "editor": '{{.conf.EditorChannel}}', | ||||
|                 "shell": '{{.conf.ShellChannel}}', | ||||
|                 "output": '{{.conf.OutputChannel}}', | ||||
|                 "session": '{{.conf.SessionChannel}}' | ||||
|             }, | ||||
|             "wideSessionId": '{{.session.Id}}' | ||||
|         }; | ||||
|         // 发往 Wide 的所有 AJAX 请求需要使用该函数创建请求参数. | ||||
|         function newWideRequest() { | ||||
|             var ret = { | ||||
|                 sid: config.wideSessionId | ||||
|             } | ||||
|             return ret; | ||||
|         } | ||||
|     </script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/jquery-2.1.1.min.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/reconnecting-websocket.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/ztree/jquery.ztree.all-3.5.min.js"></script> | ||||
| 
 | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/codemirror.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/lint/lint.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/lint/json-lint.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/selection/active-line.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/overwrite/codemirror/addon/hint/show-hint.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/hint/anyword-hint.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/display/rulers.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/edit/closebrackets.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/edit/matchbrackets.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/edit/closetag.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/search/searchcursor.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/search/search.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/dialog/dialog.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/search/match-highlighter.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/fold/foldcode.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/fold/foldgutter.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/fold/brace-fold.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/fold/xml-fold.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/fold/markdown-fold.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/addon/fold/comment-fold.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/mode/go/go.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/mode/xml/xml.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/mode/htmlmixed/htmlmixed.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/mode/javascript/javascript.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/mode/markdown/markdown.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/mode/css/css.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/mode/shell/shell.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/codemirror-{{.codeMirrorVer}}/mode/sql/sql.js"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/lint/json-lint.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/lint/go-lint.js?{{.conf.StaticResourceVersion}}"></script> | ||||
| 
 | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/js-beautify-1.5.4/beautify.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/js-beautify-1.5.4/beautify-html.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/lib/js-beautify-1.5.4/beautify-css.js?{{.conf.StaticResourceVersion}}"></script> | ||||
| 
 | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/tabs.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/dialog.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/editors.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/notification.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/tree.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/wide.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/session.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/menu.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/windows.js?{{.conf.StaticResourceVersion}}"></script> | ||||
|     <script type="text/javascript" src="{{.conf.StaticServer}}/static/js/hotkeys.js?{{.conf.StaticResourceVersion}}"></script> | ||||
| </body> | ||||
| 
 | ||||
| </html> | ||||
|  | @ -0,0 +1,36 @@ | |||
| { | ||||
|     "Server": "{IP}:7070", | ||||
|     "StaticServer": "http://{IP}:7070", | ||||
|     "EditorChannel": "ws://{IP}:7070", | ||||
|     "OutputChannel": "ws://{IP}:7070", | ||||
|     "ShellChannel": "ws://{IP}:7070", | ||||
|     "SessionChannel": "ws://{IP}:7070", | ||||
|     "HTTPSessionMaxAge": 86400, | ||||
|     "StaticResourceVersion": "201410271700", | ||||
|     "MaxProcs": 4, | ||||
|     "RuntimeMode": "dev", | ||||
|     "Pwd": "{pwd}", | ||||
|     "Workspace": "{pwd}/data/workspace", | ||||
|     "Locale": "en_US", | ||||
|     "Users": [{ | ||||
|         "Name": "admin", | ||||
|         "Password": "admin", | ||||
|         "Workspace": "{pwd}/data/user_workspaces/admin", | ||||
|         "Locale": "en_US", | ||||
|         "GoFormat": "gofmt", | ||||
|         "LatestSessionContent": { | ||||
|             "FileTree": [ | ||||
|                 "D:\\GoGoGo\\src\\github.com\\b3log\\wide\\data\\user_workspaces\\admin\\src", | ||||
|                 "D:\\GoGoGo\\src\\github.com\\b3log\\wide\\data\\user_workspaces\\admin\\src\\format", | ||||
|                 "D:\\GoGoGo\\src\\github.com\\b3log\\wide\\data\\user_workspaces\\admin\\src\\gotest", | ||||
|                 "D:\\GoGoGo\\src\\github.com\\b3log\\wide\\data\\user_workspaces\\admin\\src\\hello", | ||||
|                 "D:\\GoGoGo\\src\\github.com\\b3log\\wide\\data\\user_workspaces\\admin\\src\\time" | ||||
|             ], | ||||
|             "Files": [ | ||||
|                 "D:\\GoGoGo\\src\\github.com\\b3log\\wide\\data\\user_workspaces\\admin\\src\\time\\main.go", | ||||
|                 "D:\\GoGoGo\\src\\github.com\\b3log\\wide\\data\\user_workspaces\\admin\\src\\format\\index.html" | ||||
|             ], | ||||
|             "CurrentFile": "D:\\GoGoGo\\src\\github.com\\b3log\\wide\\data\\user_workspaces\\admin\\src\\format\\index.html" | ||||
|         } | ||||
|     }] | ||||
| } | ||||
|  | @ -8,7 +8,6 @@ import ( | |||
| 	"runtime" | ||||
| 	"strings" | ||||
| 
 | ||||
| 	"github.com/88250/gohtml" | ||||
| 	"github.com/b3log/wide/conf" | ||||
| 	"github.com/b3log/wide/session" | ||||
| 	"github.com/b3log/wide/util" | ||||
|  | @ -88,59 +87,3 @@ func GoFmtHandler(w http.ResponseWriter, r *http.Request) { | |||
| 		return | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // HTMLFmtHandler handles request of formatting HTML source code.
 | ||||
| // FIXME: gohtml has some issues...
 | ||||
| func HTMLFmtHandler(w http.ResponseWriter, r *http.Request) { | ||||
| 	data := map[string]interface{}{"succ": true} | ||||
| 	defer util.RetJSON(w, r, data) | ||||
| 
 | ||||
| 	var args map[string]interface{} | ||||
| 
 | ||||
| 	if err := json.NewDecoder(r.Body).Decode(&args); err != nil { | ||||
| 		glog.Error(err) | ||||
| 		data["succ"] = false | ||||
| 
 | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	filePath := args["file"].(string) | ||||
| 
 | ||||
| 	fout, err := os.Create(filePath) | ||||
| 
 | ||||
| 	if nil != err { | ||||
| 		glog.Error(err) | ||||
| 		data["succ"] = false | ||||
| 
 | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	code := args["code"].(string) | ||||
| 
 | ||||
| 	fout.WriteString(code) | ||||
| 	if err := fout.Close(); nil != err { | ||||
| 		glog.Error(err) | ||||
| 		data["succ"] = false | ||||
| 
 | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	output := gohtml.Format(code) | ||||
| 	if "" == output { | ||||
| 		data["succ"] = false | ||||
| 
 | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	code = string(output) | ||||
| 	data["code"] = code | ||||
| 
 | ||||
| 	fout, err = os.Create(filePath) | ||||
| 	fout.WriteString(code) | ||||
| 	if err := fout.Close(); nil != err { | ||||
| 		glog.Error(err) | ||||
| 		data["succ"] = false | ||||
| 
 | ||||
| 		return | ||||
| 	} | ||||
| } | ||||
|  |  | |||
							
								
								
									
										1
									
								
								main.go
								
								
								
								
							
							
						
						
									
										1
									
								
								main.go
								
								
								
								
							|  | @ -235,7 +235,6 @@ func main() { | |||
| 	http.HandleFunc("/exprinfo", handlerWrapper(editor.GetExprInfoHandler)) | ||||
| 	http.HandleFunc("/find/decl", handlerWrapper(editor.FindDeclarationHandler)) | ||||
| 	http.HandleFunc("/find/usages", handlerWrapper(editor.FindUsagesHandler)) | ||||
| 	http.HandleFunc("/html/fmt", handlerWrapper(editor.HTMLFmtHandler)) | ||||
| 
 | ||||
| 	// shell
 | ||||
| 	http.HandleFunc("/shell/ws", handlerWrapper(shell.WSHandler)) | ||||
|  |  | |||
|  | @ -706,6 +706,8 @@ var wide = { | |||
|         request.cursorLine = cursor.line; | ||||
|         request.cursorCh = cursor.ch; | ||||
| 
 | ||||
|         var formatted = null; | ||||
| 
 | ||||
|         switch (mode) { | ||||
|             case "text/x-go": | ||||
|                 $.ajax({ | ||||
|  | @ -718,43 +720,34 @@ var wide = { | |||
|                             curEditor.setValue(data.code); | ||||
|                             curEditor.setCursor(cursor); | ||||
|                             curEditor.scrollTo(null, scrollInfo.top); | ||||
| 
 | ||||
|                             return; | ||||
|                         } | ||||
|                     } | ||||
|                 }); | ||||
| 
 | ||||
|                 break; | ||||
|             case "text/html": | ||||
|                 try { | ||||
|                     var content = html_beautify(curEditor.getValue()); | ||||
|                     curEditor.setValue(content); | ||||
|                     curEditor.setCursor(cursor); | ||||
|                     curEditor.scrollTo(null, scrollInfo.top); | ||||
| 
 | ||||
|                     wide._save(); | ||||
|                 } catch (e) { | ||||
|                     delete e; | ||||
|                 } | ||||
| 
 | ||||
|                 formatted = html_beautify(curEditor.getValue()); | ||||
|                 break; | ||||
|             case "text/javascript": | ||||
|             case "application/json": | ||||
|                 try { | ||||
|                     var json = JSON.parse(curEditor.getValue()); | ||||
|                     curEditor.setValue(JSON.stringify(json, "", "    ")); | ||||
|                     curEditor.setCursor(cursor); | ||||
|                     curEditor.scrollTo(null, scrollInfo.top); | ||||
| 
 | ||||
|                     wide._save(); | ||||
|                 } catch (e) { | ||||
|                     delete e; | ||||
|                 } | ||||
| 
 | ||||
|                 formatted = js_beautify(curEditor.getValue()); | ||||
|                 break; | ||||
|             case "text/css": | ||||
|                 formatted = css_beautify(curEditor.getValue()); | ||||
|                 break; | ||||
|             default : | ||||
|                 // TODO: XML 格式化处理
 | ||||
|                 // 所有文件格式化后都需要进行保存
 | ||||
|                 wide._save(); | ||||
|                 break; | ||||
|         } | ||||
| 
 | ||||
|         if (formatted) { | ||||
|             curEditor.setValue(formatted); | ||||
|             curEditor.setCursor(cursor); | ||||
|             curEditor.scrollTo(null, scrollInfo.top); | ||||
| 
 | ||||
|             wide._save(); | ||||
|         } | ||||
|     }, | ||||
|     openAbout: function () { | ||||
|         $("#dialogAbout").dialog("open"); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue