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