🎨 Fix #360
This commit is contained in:
parent
e2c0b8ec8a
commit
9716c3027f
|
@ -28,7 +28,6 @@
|
||||||
"close_all_files": "Close All",
|
"close_all_files": "Close All",
|
||||||
"save_all_files": "Save All",
|
"save_all_files": "Save All",
|
||||||
"format": "Format",
|
"format": "Format",
|
||||||
"gomod": "go mod",
|
|
||||||
"goinstall": "go install",
|
"goinstall": "go install",
|
||||||
"build": "Build",
|
"build": "Build",
|
||||||
"build_n_run": "Build&Run",
|
"build_n_run": "Build&Run",
|
||||||
|
@ -102,9 +101,6 @@
|
||||||
"start-install": "START [go install]",
|
"start-install": "START [go install]",
|
||||||
"install-succ": "[go install] SUCCESS",
|
"install-succ": "[go install] SUCCESS",
|
||||||
"install-error": "[go install] ERROR",
|
"install-error": "[go install] ERROR",
|
||||||
"start-mod": "START [go mod]",
|
|
||||||
"mod-succ": "[go mod] SUCCESS",
|
|
||||||
"mod-error": "[go mod] ERROR",
|
|
||||||
"check_version": "Checking update",
|
"check_version": "Checking update",
|
||||||
"new_version_available": "new version available",
|
"new_version_available": "new version available",
|
||||||
"go_env": "Go",
|
"go_env": "Go",
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
"close_all_files": "全てのファイルを閉じる",
|
"close_all_files": "全てのファイルを閉じる",
|
||||||
"save_all_files": "全てを保存",
|
"save_all_files": "全てを保存",
|
||||||
"format": "フォーマット",
|
"format": "フォーマット",
|
||||||
"gomod": "go mod",
|
|
||||||
"goinstall": "go install",
|
"goinstall": "go install",
|
||||||
"build": "ビルド",
|
"build": "ビルド",
|
||||||
"build_n_run": "ビルド実行",
|
"build_n_run": "ビルド実行",
|
||||||
|
@ -102,9 +101,6 @@
|
||||||
"start-install": "[go install] 開始",
|
"start-install": "[go install] 開始",
|
||||||
"install-succ": "[go install] 成功",
|
"install-succ": "[go install] 成功",
|
||||||
"install-error": "[go install] 失敗",
|
"install-error": "[go install] 失敗",
|
||||||
"start-mod": "[go mod] 開始",
|
|
||||||
"mod-succ": "[go mod] 成功",
|
|
||||||
"mod-error": "[go mod] 失敗",
|
|
||||||
"check_version": "更新をチェック中",
|
"check_version": "更新をチェック中",
|
||||||
"new_version_available": "新しいバージョンがあります",
|
"new_version_available": "新しいバージョンがあります",
|
||||||
"go_env": "Go",
|
"go_env": "Go",
|
||||||
|
@ -159,9 +155,9 @@
|
||||||
"search_no_match": "一致するファイルが見つかりませんでした。",
|
"search_no_match": "一致するファイルが見つかりませんでした。",
|
||||||
"outline": "アウトライン",
|
"outline": "アウトライン",
|
||||||
"govet": "go vet",
|
"govet": "go vet",
|
||||||
"start-vet": "START [go vet]",
|
"start-vet": "[go vet] 開始",
|
||||||
"vet-succ": "[go vet] SUCCESS",
|
"vet-succ": "[go vet] 成功",
|
||||||
"vet-error": "[go vet] ERROR",
|
"vet-error": "[go vet] 失敗",
|
||||||
"restore_outline": "アウトラインを復元",
|
"restore_outline": "アウトラインを復元",
|
||||||
"share": "シェア",
|
"share": "シェア",
|
||||||
"url": "リンク",
|
"url": "リンク",
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
"close_all_files": "모두 닫기",
|
"close_all_files": "모두 닫기",
|
||||||
"save_all_files": "일괄저장",
|
"save_all_files": "일괄저장",
|
||||||
"format": "포멧",
|
"format": "포멧",
|
||||||
"gomod": "go mod",
|
|
||||||
"goinstall": "go install",
|
"goinstall": "go install",
|
||||||
"build": "빌드",
|
"build": "빌드",
|
||||||
"build_n_run": "빌드후실행",
|
"build_n_run": "빌드후실행",
|
||||||
|
@ -102,9 +101,6 @@
|
||||||
"start-install": "시작 [go install]",
|
"start-install": "시작 [go install]",
|
||||||
"install-succ": "[go install] 성공",
|
"install-succ": "[go install] 성공",
|
||||||
"install-error": "[go install] 실패",
|
"install-error": "[go install] 실패",
|
||||||
"start-mod": "시작 [go mod]",
|
|
||||||
"mod-succ": "[go mod] 성공",
|
|
||||||
"mod-error": "[go mod] 실패",
|
|
||||||
"check_version": "최신버전검색중",
|
"check_version": "최신버전검색중",
|
||||||
"new_version_available": "최신업데이트 사용 가능",
|
"new_version_available": "최신업데이트 사용 가능",
|
||||||
"go_env": "Go 환경",
|
"go_env": "Go 환경",
|
||||||
|
@ -159,9 +155,9 @@
|
||||||
"search_no_match": "해당 문서를 찾지 못하였습니다.",
|
"search_no_match": "해당 문서를 찾지 못하였습니다.",
|
||||||
"outline": "주제",
|
"outline": "주제",
|
||||||
"govet": "go vet",
|
"govet": "go vet",
|
||||||
"start-vet": "START [go vet]",
|
"start-vet": "시작 [go vet]",
|
||||||
"vet-succ": "[go vet] SUCCESS",
|
"vet-succ": "[go vet] 성공",
|
||||||
"vet-error": "[go vet] ERROR",
|
"vet-error": "[go vet] 실패",
|
||||||
"restore_outline": "주제복구",
|
"restore_outline": "주제복구",
|
||||||
"share": "공유",
|
"share": "공유",
|
||||||
"url": "하이퍼링크",
|
"url": "하이퍼링크",
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
"close_all_files": "关闭所有文件",
|
"close_all_files": "关闭所有文件",
|
||||||
"save_all_files": "保存所有文件",
|
"save_all_files": "保存所有文件",
|
||||||
"format": "格式化",
|
"format": "格式化",
|
||||||
"gomod": "go mod",
|
|
||||||
"goinstall": "go install",
|
"goinstall": "go install",
|
||||||
"build": "构建",
|
"build": "构建",
|
||||||
"build_n_run": "构建并运行",
|
"build_n_run": "构建并运行",
|
||||||
|
@ -102,9 +101,6 @@
|
||||||
"start-install": "开始 [go install]",
|
"start-install": "开始 [go install]",
|
||||||
"install-succ": "[go install] 成功",
|
"install-succ": "[go install] 成功",
|
||||||
"install-error": "[go install] 失败",
|
"install-error": "[go install] 失败",
|
||||||
"start-mod": "开始 [go mod]",
|
|
||||||
"mod-succ": "[go mod] 成功",
|
|
||||||
"mod-error": "[go mod] 失败",
|
|
||||||
"check_version": "正在检查更新",
|
"check_version": "正在检查更新",
|
||||||
"new_version_available": "新版本可用",
|
"new_version_available": "新版本可用",
|
||||||
"go_env": "Go 环境",
|
"go_env": "Go 环境",
|
||||||
|
@ -159,9 +155,9 @@
|
||||||
"search_no_match": "没有发现匹配的文件。",
|
"search_no_match": "没有发现匹配的文件。",
|
||||||
"outline": "大纲",
|
"outline": "大纲",
|
||||||
"govet": "go vet",
|
"govet": "go vet",
|
||||||
"start-vet": "START [go vet]",
|
"start-vet": "开始 [go vet]",
|
||||||
"vet-succ": "[go vet] SUCCESS",
|
"vet-succ": "[go vet] 成功",
|
||||||
"vet-error": "[go vet] ERROR",
|
"vet-error": "[go vet] 失败",
|
||||||
"restore_outline": "恢复大纲",
|
"restore_outline": "恢复大纲",
|
||||||
"share": "分享",
|
"share": "分享",
|
||||||
"url": "链接",
|
"url": "链接",
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
"close_all_files": "關閉所有檔案",
|
"close_all_files": "關閉所有檔案",
|
||||||
"save_all_files": "儲存所有檔案",
|
"save_all_files": "儲存所有檔案",
|
||||||
"format": "格式化",
|
"format": "格式化",
|
||||||
"gomod": "go mod",
|
|
||||||
"goinstall": "go install",
|
"goinstall": "go install",
|
||||||
"build": "編譯",
|
"build": "編譯",
|
||||||
"build_n_run": "編譯並執行",
|
"build_n_run": "編譯並執行",
|
||||||
|
@ -102,9 +101,6 @@
|
||||||
"start-install": "開始 [go install]",
|
"start-install": "開始 [go install]",
|
||||||
"install-succ": "[go install] 成功",
|
"install-succ": "[go install] 成功",
|
||||||
"install-error": "[go install] 失敗",
|
"install-error": "[go install] 失敗",
|
||||||
"start-mod": "開始 [go mod]",
|
|
||||||
"mod-succ": "[go mod] 成功",
|
|
||||||
"mod-error": "[go mod] 失敗",
|
|
||||||
"check_version": "正在檢查更新",
|
"check_version": "正在檢查更新",
|
||||||
"new_version_available": "可用新版本",
|
"new_version_available": "可用新版本",
|
||||||
"go_env": "Go 環境",
|
"go_env": "Go 環境",
|
||||||
|
|
1
main.go
1
main.go
|
@ -106,7 +106,6 @@ func main() {
|
||||||
http.HandleFunc("/stop", handlerWrapper(output.StopHandler))
|
http.HandleFunc("/stop", handlerWrapper(output.StopHandler))
|
||||||
http.HandleFunc("/go/test", handlerWrapper(output.GoTestHandler))
|
http.HandleFunc("/go/test", handlerWrapper(output.GoTestHandler))
|
||||||
http.HandleFunc("/go/vet", handlerWrapper(output.GoVetHandler))
|
http.HandleFunc("/go/vet", handlerWrapper(output.GoVetHandler))
|
||||||
http.HandleFunc("/go/mod", handlerWrapper(output.GoModHandler))
|
|
||||||
http.HandleFunc("/go/install", handlerWrapper(output.GoInstallHandler))
|
http.HandleFunc("/go/install", handlerWrapper(output.GoInstallHandler))
|
||||||
http.HandleFunc("/output/ws", handlerWrapper(output.WSHandler))
|
http.HandleFunc("/output/ws", handlerWrapper(output.WSHandler))
|
||||||
|
|
||||||
|
|
136
output/mod.go
136
output/mod.go
|
@ -1,136 +0,0 @@
|
||||||
// Copyright (c) 2014-present, b3log.org
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
package output
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"encoding/json"
|
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
|
||||||
"math/rand"
|
|
||||||
"net/http"
|
|
||||||
"os/exec"
|
|
||||||
"path/filepath"
|
|
||||||
|
|
||||||
"github.com/b3log/wide/conf"
|
|
||||||
"github.com/b3log/wide/i18n"
|
|
||||||
"github.com/b3log/wide/session"
|
|
||||||
"github.com/b3log/wide/util"
|
|
||||||
)
|
|
||||||
|
|
||||||
// GoModHandler handles request of go mod.
|
|
||||||
func GoModHandler(w http.ResponseWriter, r *http.Request) {
|
|
||||||
result := util.NewResult()
|
|
||||||
defer util.RetResult(w, r, result)
|
|
||||||
|
|
||||||
httpSession, _ := session.HTTPSession.Get(r, session.CookieName)
|
|
||||||
if httpSession.IsNew {
|
|
||||||
http.Error(w, "Forbidden", http.StatusForbidden)
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
uid := httpSession.Values["uid"].(string)
|
|
||||||
locale := conf.GetUser(uid).Locale
|
|
||||||
|
|
||||||
var args map[string]interface{}
|
|
||||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
|
||||||
logger.Error(err)
|
|
||||||
result.Succ = false
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
sid := args["sid"].(string)
|
|
||||||
|
|
||||||
filePath := args["file"].(string)
|
|
||||||
curDir := filepath.Dir(filePath)
|
|
||||||
curDirName := filepath.Base(curDir)
|
|
||||||
|
|
||||||
cmd := exec.Command("go", "mod", "init", curDirName)
|
|
||||||
cmd.Dir = curDir
|
|
||||||
|
|
||||||
setCmdEnv(cmd, uid)
|
|
||||||
|
|
||||||
stdout, err := cmd.StdoutPipe()
|
|
||||||
if nil != err {
|
|
||||||
logger.Error(err)
|
|
||||||
result.Succ = false
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
stderr, err := cmd.StderrPipe()
|
|
||||||
if nil != err {
|
|
||||||
logger.Error(err)
|
|
||||||
result.Succ = false
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if !result.Succ {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
channelRet := map[string]interface{}{}
|
|
||||||
|
|
||||||
if nil != session.OutputWS[sid] {
|
|
||||||
// display "START [go mod]" in front-end browser
|
|
||||||
|
|
||||||
channelRet["output"] = "<span class='start-mod'>" + i18n.Get(locale, "start-mod").(string) + "</span>\n"
|
|
||||||
channelRet["cmd"] = "start-mod"
|
|
||||||
|
|
||||||
wsChannel := session.OutputWS[sid]
|
|
||||||
|
|
||||||
err := wsChannel.WriteJSON(&channelRet)
|
|
||||||
if nil != err {
|
|
||||||
logger.Warn(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
wsChannel.Refresh()
|
|
||||||
}
|
|
||||||
|
|
||||||
reader := bufio.NewReader(io.MultiReader(stdout, stderr))
|
|
||||||
|
|
||||||
if err := cmd.Start(); nil != err {
|
|
||||||
logger.Error(err)
|
|
||||||
result.Succ = false
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
runningId := rand.Int()
|
|
||||||
|
|
||||||
logger.Debugf("User [%s, %s] is running [go mod] [runningId=%d]", uid, sid, runningId)
|
|
||||||
channelRet = map[string]interface{}{}
|
|
||||||
channelRet["cmd"] = "go mod"
|
|
||||||
|
|
||||||
buf, _ := ioutil.ReadAll(reader)
|
|
||||||
output := string(buf)
|
|
||||||
err = cmd.Wait()
|
|
||||||
if nil != err || 0 != cmd.ProcessState.ExitCode() {
|
|
||||||
logger.Debugf("User [%s, %s] 's [go mod] [runningId=%d] has done (with error)", uid, sid, runningId)
|
|
||||||
channelRet["output"] = "<span class='mod-error'>" + i18n.Get(locale, "mod-error").(string) + "</span>\n" + output
|
|
||||||
} else {
|
|
||||||
logger.Debugf("User [%s, %s] 's running [go mod] [runningId=%d] has done", uid, sid, runningId)
|
|
||||||
channelRet["output"] = "<span class='mod-succ'>" + i18n.Get(locale, "mod-succ").(string) + "</span>\n" + output
|
|
||||||
}
|
|
||||||
|
|
||||||
wsChannel := session.OutputWS[sid]
|
|
||||||
if nil != wsChannel {
|
|
||||||
wsChannel.WriteJSON(&channelRet)
|
|
||||||
wsChannel.Refresh()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -259,22 +259,19 @@
|
||||||
|
|
||||||
.bottom-window-group .output .start-build,
|
.bottom-window-group .output .start-build,
|
||||||
.bottom-window-group .output .start-test, .start-vet,
|
.bottom-window-group .output .start-test, .start-vet,
|
||||||
.bottom-window-group .output .start-install,
|
.bottom-window-group .output .start-install {
|
||||||
.bottom-window-group .output .start-mod {
|
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-window-group .output .build-succ,
|
.bottom-window-group .output .build-succ,
|
||||||
.bottom-window-group .output .test-succ, .vet-succ,
|
.bottom-window-group .output .test-succ, .vet-succ,
|
||||||
.bottom-window-group .output .install-succ,
|
.bottom-window-group .output .install-succ {
|
||||||
.bottom-window-group .output .mod-succ {
|
|
||||||
color: rgb(0,153,0);
|
color: rgb(0,153,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-window-group .output .build-error,
|
.bottom-window-group .output .build-error,
|
||||||
.bottom-window-group .output .test-error, .vet-error,
|
.bottom-window-group .output .test-error, .vet-error,
|
||||||
.bottom-window-group .output .install-error,
|
.bottom-window-group .output .install-error {
|
||||||
.bottom-window-group .output .mod-error {
|
|
||||||
color: #9d0000;
|
color: #9d0000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
.dialog-close-icon,.dialog-close-icon:hover{text-decoration:none}.dialog-background{height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%;filter:alpha(opacity=30);display:none;background-color:#000;z-index:99}.dialog-panel{position:absolute;z-index:100;display:none;-moz-user-select:none;user-select:none;box-shadow:0 2px 10px 1px #000}.dialog-title{float:left;line-height:22px;margin-left:3px;font-weight:700}.dialog-header-bg{height:23px;background-color:#bbb;cursor:move;width:100%}.dialog-close-icon{float:right;margin:3px}.dialog-main>div{width:100%}.dialog-footer{padding:10px;text-align:right}#dialogCloseEditor button,.dialog-footer button{margin:0 5px}#dialogAlert,#dialogRemoveConfirm,.dialog-form,.dialog-prompt{padding:10px 15px 0;overflow:hidden}.dialog-main input,.dialog-main select{width:100%;margin:2px auto}#dialogGoFilePrompt>ul{position:relative;height:260px;overflow:auto;margin-top:5px;background-color:#FFF;border:1px solid #919191}#dialogPreference{margin:10px}#dialogPreference .tabs-panel{padding:10px}#dialogPreference .preference{margin-bottom:10px}#dialogPreference img.gravatar{width:48px;height:48px}
|
.dialog-close-icon,.dialog-close-icon:hover{text-decoration:none}.dialog-background{height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%;filter:alpha(opacity=30);display:none;background-color:#000;z-index:99}.dialog-panel{position:absolute;z-index:100;display:none;-moz-user-select:none;user-select:none;box-shadow:0 2px 10px 1px #000}.dialog-title{float:left;line-height:22px;margin-left:3px;font-weight:700}.dialog-header-bg{height:23px;background-color:#bbb;cursor:move;width:100%}.dialog-close-icon{float:right;margin:3px}.dialog-main>div{width:100%}.dialog-footer{padding:10px;text-align:right}#dialogCloseEditor button,.dialog-footer button{margin:0 5px}#dialogAlert,#dialogRemoveConfirm,.dialog-form,.dialog-prompt{padding:10px 15px 0;overflow:hidden}.dialog-main input,.dialog-main select{width:100%;margin:2px auto}#dialogGoFilePrompt>ul{position:relative;height:260px;overflow:auto;margin-top:5px;background-color:#FFF;border:1px solid #919191}#dialogPreference{margin:10px}#dialogPreference .tabs-panel{padding:10px}#dialogPreference .preference{margin-bottom:10px}#dialogPreference img.gravatar{width:48px;height:48px}
|
||||||
body,ul{margin:0}body,button,input{font-family:Helvetica}.list li,body{overflow:hidden}::-webkit-scrollbar{background:0 0;width:16px;height:16px}::-webkit-scrollbar-corner{display:none;background-color:transparent}::-webkit-scrollbar-thumb{border:0 solid transparent;border-right-width:4px;border-left-width:4px;border-radius:9px;box-shadow:inset 0 0 0 1px rgba(128,128,128,.2),inset 0 0 0 4px rgba(128,128,128,.2)}::-webkit-scrollbar-thumb:horizontal{border-bottom-width:4px;border-top-width:4px}body{font-size:13px;color:#000}ul{padding:0;list-style:none}*{box-sizing:border-box}a{color:#4183c4;text-decoration:none}a:hover{text-decoration:underline}img{vertical-align:middle}.fn-left{float:left}.fn-right{float:right}.fn-clear:after,.fn-clear:before{display:table;content:""}.fn-clear:after{clear:both}.fn-none{display:none}.ft-small{color:#999;font-size:12px}.ft-red{color:#9d0000}.list li{cursor:pointer;line-height:20px;padding:0 3px;word-wrap:normal;word-break:normal;white-space:nowrap;text-overflow:ellipsis}.list li.selected,.list li:hover{background-color:#3875d7;color:#FFF}.list li.selected .ft-small,.list li:hover .ft-small{color:#FFF}@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?lqk80d);src:url(fonts/icomoon.eot?lqk80d#iefix) format('embedded-opentype'),url(fonts/icomoon.ttf?lqk80d) format('truetype'),url(fonts/icomoon.woff?lqk80d) format('woff'),url(fonts/icomoon.svg?lqk80d#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" ico-"],[class^=ico-]{font-family:icomoon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:pointer;font-size:13px;line-height:20px}.ico-qqz:before{content:"\e900"}.ico-find:before{content:"\e602"}.ico-findfiles:before{content:"\e603"}.ico-editor:before{content:"\e604"}.ico-notification:before{content:"\e607"}.ico-price:before{content:"\e616"}.ico-report:before{content:"\e605"}.ico-git:before{content:"\e624"}.ico-book:before{content:"\e623"}.ico-start:before{content:"\e9d7";text-shadow:0 0 rgba(0,0,0,.4)}.ico-tree:before{content:"\e600"}.ico-build:before{content:"\e601"}.ico-export:before{content:"\f0ed"}.ico-import:before{content:"\f0ee"}.ico-keyboard:before{content:"\f11c"}.ico-moveup:before{content:"\f148"}.ico-movedown:before{content:"\f149"}.ico-weibo:before{content:"\e621"}.ico-uniE608:before{content:"\e608"}.ico-max:before{content:"\e609"}.ico-remove:before{content:"\e60b"}.ico-buildrun:before{content:"\e60c"}.ico-about:before{content:"\e60d"}.ico-undo:before{content:"\e60e"}.ico-stop:before{content:"\e60f"}.ico-close:before{content:"\e611";text-shadow:0 0 rgba(0,0,0,.4)}.ico-format:before{content:"\e612"}.ico-restore:before{content:"\e613"}.toolbars .ico-restore:before{content:"\e60a"}.ico-min:before{content:"\e614";position:absolute;right:5px}.ico-redo:before{content:"\e615"}.ico-uniE617:before{content:"\e617"}.ico-signout:before{content:"\e618"}.ico-email:before{content:"\e619"}.ico-googleplus:before{content:"\e61a"}.ico-facebook:before{content:"\e61b"}.ico-twitter:before{content:"\e61c"}.ico-info:before{content:"\e61d"}.ico-goline:before{content:"\e61e"}.ico-share:before{content:"\e61f"}.ico-comment:before{content:"\e620"}.ico-github:before{content:"\f00a"}.ico-refresh:before{content:"\f021"}.ico-save:before{content:"\f0c7"}
|
body,ul{margin:0}body,button,input{font-family:Helvetica}.list li,body{overflow:hidden}::-webkit-scrollbar{background:0 0;width:16px;height:16px}::-webkit-scrollbar-corner{display:none;background-color:transparent}::-webkit-scrollbar-thumb{border:0 solid transparent;border-right-width:4px;border-left-width:4px;border-radius:9px;box-shadow:inset 0 0 0 1px rgba(128,128,128,.2),inset 0 0 0 4px rgba(128,128,128,.2)}::-webkit-scrollbar-thumb:horizontal{border-bottom-width:4px;border-top-width:4px}body{font-size:13px;color:#000}ul{padding:0;list-style:none}*{box-sizing:border-box}a{color:#4183c4;text-decoration:none}a:hover{text-decoration:underline}img{vertical-align:middle}.fn-left{float:left}.fn-right{float:right}.fn-clear:after,.fn-clear:before{display:table;content:""}.fn-clear:after{clear:both}.fn-none{display:none}.ft-small{color:#999;font-size:12px}.ft-red{color:#9d0000}.list li{cursor:pointer;line-height:20px;padding:0 3px;word-wrap:normal;word-break:normal;white-space:nowrap;text-overflow:ellipsis}.list li.selected,.list li:hover{background-color:#3875d7;color:#FFF}.list li.selected .ft-small,.list li:hover .ft-small{color:#FFF}@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?lqk80d);src:url(fonts/icomoon.eot?lqk80d#iefix) format('embedded-opentype'),url(fonts/icomoon.ttf?lqk80d) format('truetype'),url(fonts/icomoon.woff?lqk80d) format('woff'),url(fonts/icomoon.svg?lqk80d#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" ico-"],[class^=ico-]{font-family:icomoon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:pointer;font-size:13px;line-height:20px}.ico-qqz:before{content:"\e900"}.ico-find:before{content:"\e602"}.ico-findfiles:before{content:"\e603"}.ico-editor:before{content:"\e604"}.ico-notification:before{content:"\e607"}.ico-price:before{content:"\e616"}.ico-report:before{content:"\e605"}.ico-git:before{content:"\e624"}.ico-book:before{content:"\e623"}.ico-start:before{content:"\e9d7";text-shadow:0 0 rgba(0,0,0,.4)}.ico-tree:before{content:"\e600"}.ico-build:before{content:"\e601"}.ico-export:before{content:"\f0ed"}.ico-import:before{content:"\f0ee"}.ico-keyboard:before{content:"\f11c"}.ico-moveup:before{content:"\f148"}.ico-movedown:before{content:"\f149"}.ico-weibo:before{content:"\e621"}.ico-uniE608:before{content:"\e608"}.ico-max:before{content:"\e609"}.ico-remove:before{content:"\e60b"}.ico-buildrun:before{content:"\e60c"}.ico-about:before{content:"\e60d"}.ico-undo:before{content:"\e60e"}.ico-stop:before{content:"\e60f"}.ico-close:before{content:"\e611";text-shadow:0 0 rgba(0,0,0,.4)}.ico-format:before{content:"\e612"}.ico-restore:before{content:"\e613"}.toolbars .ico-restore:before{content:"\e60a"}.ico-min:before{content:"\e614";position:absolute;right:5px}.ico-redo:before{content:"\e615"}.ico-uniE617:before{content:"\e617"}.ico-signout:before{content:"\e618"}.ico-email:before{content:"\e619"}.ico-googleplus:before{content:"\e61a"}.ico-facebook:before{content:"\e61b"}.ico-twitter:before{content:"\e61c"}.ico-info:before{content:"\e61d"}.ico-goline:before{content:"\e61e"}.ico-share:before{content:"\e61f"}.ico-comment:before{content:"\e620"}.ico-github:before{content:"\f00a"}.ico-refresh:before{content:"\f021"}.ico-save:before{content:"\f0c7"}
|
||||||
.frame li,.tabs>div{padding:0 5px;cursor:pointer}.footer .cursor,.frame li,.menu>ul>li>span,.notification-count,.tabs>div{cursor:pointer}.ico,.menu .split,.menu>ul>li,.tabs>div{float:left}.frame{position:absolute;width:320px;z-index:21;display:none}.frame li{line-height:25px}.frame li.disabled,.frame li.disabled .font-ico,.frame li.disabled:hover .font-ico{color:#999}.frame a{color:#000;text-decoration:none}.frame a:hover,.frame li:hover a{color:#FFF}.frame .space{display:inline-block;width:20px;height:15px}.frame .font-ico{margin-right:5px;width:15px;display:inline-block;text-align:center}.tabs{height:21px;overflow:hidden;width:100%}.tabs>div{line-height:20px;height:20px}.tabs>div>span.changed{font-weight:700}.tabs-panel{overflow:auto;flex:1;height:100%}.edit-exprinfo,.edit-panel{position:absolute;overflow:hidden}.menu{display:block!important}.menu>ul>li>span{font-size:12px;line-height:21px;padding:4px 7px}.menu .split{border-left:1px solid #919191;height:21px;margin:0 5px 0 0}.menu img.gravatar{float:left;margin:2px 8px;height:17px;width:17px;border-radius:9px}#buildRun{color:#6DB14C;font-size:19px}#buildRun.ico-stop{color:#9d0000;font-size:16px}.share-panel{position:absolute;z-index:20;width:190px;padding:5px 0;right:0;top:21px}.share-panel .font-ico{font-size:20px;transition:all .2s ease-out 0s;margin:0 5px;width:24px}.share-panel .font-ico:hover{transform:rotate(360deg)}.edit-panel{left:20%;width:60%;height:70%;flex-flow:column;display:flex}.toolbars{position:absolute;right:5px;top:1px}.ico{background-image:url(../images/ico-file.png);height:16px;margin:2px 0 0 -2px;width:16px}.edit-exprinfo{z-index:10;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:#fff;font-size:90%;max-height:20em;overflow-y:auto}.CodeMirror,.CodeMirror-hints{font-family:Consolas,'Courier New',monospace}.CodeMirror-hints .ico{margin:-1px 2px 0 -1px}.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:#fff}.CodeMirror div.CodeMirror-cursor{border-left:2px solid #333}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:transparent}.bottom-window-group{background-color:#fff;flex-flow:column}.bottom-window-group .output{font-family:Consolas,Courier New,monospace;padding:0 5px;line-height:16px;font-size:12px;overflow-x:scroll;outline:0}.bottom-window-group .output pre{margin:0;font-family:Consolas,'Courier New',monospace}.bottom-window-group .output .start-build,.bottom-window-group .output .start-install,.bottom-window-group .output .start-mod,.bottom-window-group .output .start-test,.start-vet{color:#999}.bottom-window-group .output .build-succ,.bottom-window-group .output .install-succ,.bottom-window-group .output .mod-succ,.bottom-window-group .output .test-succ,.vet-succ{color:#090}.bottom-window-group .output .build-error,.bottom-window-group .output .install-error,.bottom-window-group .output .mod-error,.bottom-window-group .output .test-error,.vet-error{color:#9d0000}.bottom-window-group .output .stderr{color:gray;font-style:italic}.bottom-window-group .output .path{text-decoration:underline;cursor:pointer}.bottom-window-group table{width:100%}.bottom-window-group td{border-bottom:1px solid #919191;font-size:12px;line-height:19px}.bottom-window-group .notification{outline:0}.bottom-window-group .notification .severity,.bottom-window-group .notification .type{width:50px;padding:0 5px}.bottom-window-group .search{display:flex;flex-flow:column;outline:0}.footer{box-shadow:0 1px 0 0 rgba(255,255,255,.06) inset;padding-left:5px;line-height:18px;display:block!important}.notification-count{float:right;display:none;background-color:#9d0000;color:#FFF;margin:1px 5px;padding:0 2px;border-radius:3px;line-height:16px}
|
.frame li,.tabs>div{padding:0 5px;cursor:pointer}.footer .cursor,.frame li,.menu>ul>li>span,.notification-count,.tabs>div{cursor:pointer}.ico,.menu .split,.menu>ul>li,.tabs>div{float:left}.frame{position:absolute;width:320px;z-index:21;display:none}.frame li{line-height:25px}.frame li.disabled,.frame li.disabled .font-ico,.frame li.disabled:hover .font-ico{color:#999}.frame a{color:#000;text-decoration:none}.frame a:hover,.frame li:hover a{color:#FFF}.frame .space{display:inline-block;width:20px;height:15px}.frame .font-ico{margin-right:5px;width:15px;display:inline-block;text-align:center}.tabs{height:21px;overflow:hidden;width:100%}.tabs>div{line-height:20px;height:20px}.tabs>div>span.changed{font-weight:700}.tabs-panel{overflow:auto;flex:1;height:100%}.edit-exprinfo,.edit-panel{position:absolute;overflow:hidden}.menu{display:block!important}.menu>ul>li>span{font-size:12px;line-height:21px;padding:4px 7px}.menu .split{border-left:1px solid #919191;height:21px;margin:0 5px 0 0}.menu img.gravatar{float:left;margin:2px 8px;height:17px;width:17px;border-radius:9px}#buildRun{color:#6DB14C;font-size:19px}#buildRun.ico-stop{color:#9d0000;font-size:16px}.share-panel{position:absolute;z-index:20;width:190px;padding:5px 0;right:0;top:21px}.share-panel .font-ico{font-size:20px;transition:all .2s ease-out 0s;margin:0 5px;width:24px}.share-panel .font-ico:hover{transform:rotate(360deg)}.edit-panel{left:20%;width:60%;height:70%;flex-flow:column;display:flex}.toolbars{position:absolute;right:5px;top:1px}.ico{background-image:url(../images/ico-file.png);height:16px;margin:2px 0 0 -2px;width:16px}.edit-exprinfo{z-index:10;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:#fff;font-size:90%;max-height:20em;overflow-y:auto}.CodeMirror,.CodeMirror-hints{font-family:Consolas,'Courier New',monospace}.CodeMirror-hints .ico{margin:-1px 2px 0 -1px}.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:#fff}.CodeMirror div.CodeMirror-cursor{border-left:2px solid #333}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:transparent}.bottom-window-group{background-color:#fff;flex-flow:column}.bottom-window-group .output{font-family:Consolas,Courier New,monospace;padding:0 5px;line-height:16px;font-size:12px;overflow-x:scroll;outline:0}.bottom-window-group .output pre{margin:0;font-family:Consolas,'Courier New',monospace}.bottom-window-group .output .start-build,.bottom-window-group .output .start-install,.bottom-window-group .output .start-test,.start-vet{color:#999}.bottom-window-group .output .build-succ,.bottom-window-group .output .install-succ,.bottom-window-group .output .test-succ,.vet-succ{color:#090}.bottom-window-group .output .build-error,.bottom-window-group .output .install-error,.bottom-window-group .output .test-error,.vet-error{color:#9d0000}.bottom-window-group .output .stderr{color:gray;font-style:italic}.bottom-window-group .output .path{text-decoration:underline;cursor:pointer}.bottom-window-group table{width:100%}.bottom-window-group td{border-bottom:1px solid #919191;font-size:12px;line-height:19px}.bottom-window-group .notification{outline:0}.bottom-window-group .notification .severity,.bottom-window-group .notification .type{width:50px;padding:0 5px}.bottom-window-group .search{display:flex;flex-flow:column;outline:0}.footer{box-shadow:0 1px 0 0 rgba(255,255,255,.06) inset;padding-left:5px;line-height:18px;display:block!important}.notification-count{float:right;display:none;background-color:#9d0000;color:#FFF;margin:1px 5px;padding:0 2px;border-radius:3px;line-height:16px}
|
||||||
.side{width:20%;position:absolute;height:100%;z-index:8;flex-flow:column;display:flex}.side-max{width:100%;z-index:11}.side-right .tabs-panel>div{overflow:auto}.side-right{flex-flow:column}#outline .ico{margin:1px 5px 0}.ico-func{background-position:-123px -21px}.ico-interface{background-position:-143px -21px}.ico-const{background-position:-103px -21px}.ico-var{background-position:-63px -21px}.ico-struct{background-position:-83px -21px}.ico-type{background-position:-163px -21px}.ico-package{background-position:-183px -21px}.ztree{width:100%;padding:0;outline:0;border:0}.ztree li a.curSelectedNode{background-color:#3875d7;border-width:0;color:#fff;height:18px;opacity:1}.ztree li a:hover{text-decoration:none}.ztree li>a>span.button,.ztree li>a>span.button.ico-ztree-dir,.ztree li>a>span.button.ico-ztree-dir-api,.ztree li>a>span.button.ico-ztree-dir-workspace{margin-right:2px}.ztree li>a>span.button{background-image:url(../images/ico-file.png);margin-right:0}.ico-ztree-dir{background-position:-2px -23px}.ico-ztree-dir-api{background-position:-22px -23px}.ico-ztree-dir-workspace{background-position:-42px -23px}.ico-ztree-html{background-position:-4px -2px}.ico-ztree-go{background-position:-22px -2px}.ico-ztree-css{background-position:-42px -2px}.ico-ztree-img{background-position:-63px -2px}.ico-ztree-other{background-position:-83px -2px}.ico-ztree-text{background-position:-103px -2px}.ico-ztree-sql{background-position:-123px -2px}.ico-ztree-pro{background-position:-142px -2px}.ico-ztree-md{background-position:-162px -2px}.ico-ztree-js{background-position:-182px -2px}.ico-ztree-xml{background-position:-202px -2px}
|
.side{width:20%;position:absolute;height:100%;z-index:8;flex-flow:column;display:flex}.side-max{width:100%;z-index:11}.side-right .tabs-panel>div{overflow:auto}.side-right{flex-flow:column}#outline .ico{margin:1px 5px 0}.ico-func{background-position:-123px -21px}.ico-interface{background-position:-143px -21px}.ico-const{background-position:-103px -21px}.ico-var{background-position:-63px -21px}.ico-struct{background-position:-83px -21px}.ico-type{background-position:-163px -21px}.ico-package{background-position:-183px -21px}.ztree{width:100%;padding:0;outline:0;border:0}.ztree li a.curSelectedNode{background-color:#3875d7;border-width:0;color:#fff;height:18px;opacity:1}.ztree li a:hover{text-decoration:none}.ztree li>a>span.button,.ztree li>a>span.button.ico-ztree-dir,.ztree li>a>span.button.ico-ztree-dir-api,.ztree li>a>span.button.ico-ztree-dir-workspace{margin-right:2px}.ztree li>a>span.button{background-image:url(../images/ico-file.png);margin-right:0}.ico-ztree-dir{background-position:-2px -23px}.ico-ztree-dir-api{background-position:-22px -23px}.ico-ztree-dir-workspace{background-position:-42px -23px}.ico-ztree-html{background-position:-4px -2px}.ico-ztree-go{background-position:-22px -2px}.ico-ztree-css{background-position:-42px -2px}.ico-ztree-img{background-position:-63px -2px}.ico-ztree-other{background-position:-83px -2px}.ico-ztree-text{background-position:-103px -2px}.ico-ztree-sql{background-position:-123px -2px}.ico-ztree-pro{background-position:-142px -2px}.ico-ztree-md{background-position:-162px -2px}.ico-ztree-js{background-position:-182px -2px}.ico-ztree-xml{background-position:-202px -2px}
|
||||||
#startPage{padding:50px 70px;line-height:28px;white-space:normal;word-wrap:break-word;overflow:auto}#startPage a{color:#4183c4;text-decoration:none}#startPage a:hover{text-decoration:underline}#startPage .title{background-color:#BBB;border-bottom-width:0!important;border-radius:3px 3px 0 0;font-size:15px;margin-bottom:10px;padding:5px 10px;color:#FFF}#startPage .details li.border,#startPage .news li{border-bottom:1px solid #919191}#startPage .details{width:30%;float:left}#startPage .details label{color:#666}#startPage .details li.border{padding-bottom:5px;margin-bottom:5px}#startPage .details li.border.workspace{line-height:18px;padding-bottom:10px!important;word-wrap:break-word;white-space:normal;word-break:break-all}#startPage .news{width:60%;float:right;border-left:1px solid #f1f1f1;margin-left:10%;padding-left:10%;white-space:nowrap;overflow:hidden}#startPage .date{color:#bbb;font-size:13px;word-wrap:normal;white-space:nowrap}
|
#startPage{padding:50px 70px;line-height:28px;white-space:normal;word-wrap:break-word;overflow:auto}#startPage a{color:#4183c4;text-decoration:none}#startPage a:hover{text-decoration:underline}#startPage .title{background-color:#BBB;border-bottom-width:0!important;border-radius:3px 3px 0 0;font-size:15px;margin-bottom:10px;padding:5px 10px;color:#FFF}#startPage .details li.border,#startPage .news li{border-bottom:1px solid #919191}#startPage .details{width:30%;float:left}#startPage .details label{color:#666}#startPage .details li.border{padding-bottom:5px;margin-bottom:5px}#startPage .details li.border.workspace{line-height:18px;padding-bottom:10px!important;word-wrap:break-word;white-space:normal;word-break:break-all}#startPage .news{width:60%;float:right;border-left:1px solid #f1f1f1;margin-left:10%;padding-left:10%;white-space:nowrap;overflow:hidden}#startPage .date{color:#bbb;font-size:13px;word-wrap:normal;white-space:nowrap}
|
||||||
#dialogAboutDialog .dialog-main{background-color:#FFF}#dialogAbout{margin:35px 20px;line-height:28px}#dialogAbout .item{margin:0 10px}#dialogAbout a{color:#4183c4;text-decoration:none}#dialogAbout a:hover{text-decoration:underline}#dialogAbout label{color:#666}#dialogAbout img{width:100px;float:left;margin-right:60px}#dialogAbout .space{margin-bottom:6px;border-bottom:1px solid #919191;padding-bottom:6px}#dialogAbout .thx ul{margin-left:50px}#dialogAbout .thx a{width:80px;display:inline-block}#dialogAbout .license{color:#999;font-size:12px;line-height:normal;height:85px;overflow-x:hidden;word-wrap:break-word}
|
#dialogAboutDialog .dialog-main{background-color:#FFF}#dialogAbout{margin:35px 20px;line-height:28px}#dialogAbout .item{margin:0 10px}#dialogAbout a{color:#4183c4;text-decoration:none}#dialogAbout a:hover{text-decoration:underline}#dialogAbout label{color:#666}#dialogAbout img{width:100px;float:left;margin-right:60px}#dialogAbout .space{margin-bottom:6px;border-bottom:1px solid #919191;padding-bottom:6px}#dialogAbout .thx ul{margin-left:50px}#dialogAbout .thx a{width:80px;display:inline-block}#dialogAbout .license{color:#999;font-size:12px;line-height:normal;height:85px;overflow-x:hidden;word-wrap:break-word}
|
|
@ -172,33 +172,6 @@ var menu = {
|
||||||
openAbout: function () {
|
openAbout: function () {
|
||||||
$("#dialogAbout").dialog("open");
|
$("#dialogAbout").dialog("open");
|
||||||
},
|
},
|
||||||
gomod: function () {
|
|
||||||
menu.saveAllFiles();
|
|
||||||
|
|
||||||
var currentPath = editors.getCurrentPath();
|
|
||||||
if (!currentPath) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($(".menu li.go-mod").hasClass("disabled")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var request = newWideRequest();
|
|
||||||
request.file = currentPath;
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
type: 'POST',
|
|
||||||
url: '/go/mod',
|
|
||||||
data: JSON.stringify(request),
|
|
||||||
dataType: "json",
|
|
||||||
beforeSend: function () {
|
|
||||||
bottomGroup.resetOutput();
|
|
||||||
},
|
|
||||||
success: function (result) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
goinstall: function () {
|
goinstall: function () {
|
||||||
menu.saveAllFiles();
|
menu.saveAllFiles();
|
||||||
|
|
||||||
|
|
|
@ -390,14 +390,12 @@ var wide = {
|
||||||
case 'start-test':
|
case 'start-test':
|
||||||
case 'start-vet':
|
case 'start-vet':
|
||||||
case 'start-install':
|
case 'start-install':
|
||||||
case 'start-mod':
|
|
||||||
bottomGroup.fillOutput(data.output);
|
bottomGroup.fillOutput(data.output);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'go test':
|
case 'go test':
|
||||||
case 'go vet':
|
case 'go vet':
|
||||||
case 'go install':
|
case 'go install':
|
||||||
case 'go mod':
|
|
||||||
bottomGroup.fillOutput($('.bottom-window-group .output > div').html() + data.output);
|
bottomGroup.fillOutput($('.bottom-window-group .output > div').html() + data.output);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -277,15 +277,10 @@
|
||||||
<span>{{.i18n.test}}</span>
|
<span>{{.i18n.test}}</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="hr"></li>
|
<li class="hr"></li>
|
||||||
<li class="go-mod disabled" onclick="if (!$(this).hasClass('disabled')){menu.gomod()}">
|
|
||||||
<span class="space"></span>
|
|
||||||
<span>{{.i18n.gomod}}</span>
|
|
||||||
</li>
|
|
||||||
<li class="go-install disabled" onclick="if (!$(this).hasClass('disabled')){menu.goinstall()}">
|
<li class="go-install disabled" onclick="if (!$(this).hasClass('disabled')){menu.goinstall()}">
|
||||||
<span class="space"></span>
|
<span class="space"></span>
|
||||||
<span>{{.i18n.goinstall}}</span>
|
<span>{{.i18n.goinstall}}</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="hr"></li>
|
|
||||||
<li class="go-vet disabled" onclick="if (!$(this).hasClass('disabled')){menu.govet()}">
|
<li class="go-vet disabled" onclick="if (!$(this).hasClass('disabled')){menu.govet()}">
|
||||||
<span class="space"></span>
|
<span class="space"></span>
|
||||||
<span>{{.i18n.govet}}</span>
|
<span>{{.i18n.govet}}</span>
|
||||||
|
|
Loading…
Reference in New Issue