Skip to content

Commit fa773dc

Browse files
committed
[modules:nodepad] use ace eidtor
1 parent 050c118 commit fa773dc

File tree

5 files changed

+141
-71
lines changed

5 files changed

+141
-71
lines changed

modules/nodepad/static/index.html

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
<!doctype>
2+
<html>
3+
<head>
4+
<meta charset='utf-8'>
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
6+
<title>Notepad</title>
7+
<link type="text/css" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
8+
</head>
9+
<body>
10+
<div class="well well-sm" id="view_file_list">
11+
<div class="input-group">
12+
<input id="txt_dir" type="text" class="form-control" placeholder="dirictory path" />
13+
<span class="input-group-btn">
14+
<button id="btn_list" class="btn btn-default">List</button>
15+
</span>
16+
</div>
17+
<div id="view_list" class="alert alert-default">(No Files)</div>
18+
</div>
19+
<div class="well well-sm" id="view_notepad">
20+
<div class="input-group">
21+
<input id="txt_file" type="text" class="form-control" placeholder="file name" />
22+
<span class="input-group-btn">
23+
<button id="btn_open" class="btn btn-default">Open</button>
24+
<button id="btn_save" class="btn btn-default">Save</button>
25+
</span>
26+
</div>
27+
</div>
28+
<div id="txt_text" style="width: 100%; height: 300px; position: absolute;"></div>
29+
<script type="text/javascript" src="https://ace.c9.io/build/src/ace.js"></script>
30+
<script type="text/javascript" src="https://ace.c9.io/build/src/mode-javascript.js" charset="utf-8"></script>
31+
<script type="text/javascript" src="https://ace.c9.io/build/src/mode-html.js" charset="utf-8"></script>
32+
<script type="text/javascript" src="https://ace.c9.io/build/src/mode-css.js" charset="utf-8"></script>
33+
<script type="text/javascript" src="https://ace.c9.io/build/src/mode-java.js" charset="utf-8"></script>
34+
<script type="text/javascript" src="https://ace.c9.io/build/src/mode-c_cpp.js" charset="utf-8"></script>
35+
<script type="text/javascript" src="https://ace.c9.io/build/src/mode-python.js" charset="utf-8"></script>
36+
<script type="text/javascript" src="https://ace.c9.io/build/src/mode-ruby.js" charset="utf-8"></script>
37+
<script type="text/javascript" src="https://ace.c9.io/build/src/mode-json.js" charset="utf-8"></script>
38+
<script type="text/javascript" src="common.js"></script>
39+
<script>
40+
var editor = ace.edit('txt_text');
41+
$('view_list').on('click', function (evt) {
42+
if (evt.target.tagName.toLowerCase() !== 'button') return;
43+
var txt_dir = document.getElementById('txt_dir'),
44+
view_list = document.getElementById('view_list'),
45+
one = evt.target.textContent,
46+
sp = txt_dir.value.charAt(txt_dir.value.length - 1) === '/'?'':'/';
47+
if (one.charAt(one.length - 1) === '/') {
48+
txt_dir.value = txt_dir.value + sp + one;
49+
clear_element(view_list);
50+
view_list.appendChild(document.createTextNode('(No Files)'));
51+
} else {
52+
document.getElementById('txt_file').value = txt_dir.value + sp + one;
53+
}
54+
});
55+
$('btn_list').on('click', function (evt) {
56+
ajax({
57+
url: '/api/nodebase/nodepad/v1/list',
58+
json: {
59+
path: document.getElementById('txt_dir').value
60+
}
61+
}, function (data) {
62+
var x = document.getElementById('view_list');
63+
green_border(document.getElementById('btn_list'));
64+
clear_element(x);
65+
if (data.files.length + data.dirs.length > 0) {
66+
data.files.forEach(function (f) {
67+
var c = document.createElement('button');
68+
c.className = 'btn btn-default';
69+
c.appendChild(document.createTextNode(f));
70+
x.appendChild(c);
71+
});
72+
data.dirs.forEach(function (d) {
73+
var c = document.createElement('button');
74+
c.className = 'btn btn-info';
75+
c.appendChild(document.createTextNode(d + '/'));
76+
x.appendChild(c);
77+
});
78+
} else {
79+
x.appendChild(document.createTextNode('(No Files)'));
80+
}
81+
}, function () {
82+
red_border(document.getElementById('btn_list'));
83+
});
84+
});
85+
$('btn_open').on('click', function (evt) {
86+
ajax({
87+
url: '/api/nodebase/nodepad/v1/open',
88+
json: {
89+
path: document.getElementById('txt_file').value
90+
}
91+
}, function (data) {
92+
green_border(document.getElementById('btn_open'));
93+
change_mode(document.getElementById('txt_file').value);
94+
editor.setValue(data.text);
95+
}, function () {
96+
red_border(document.getElementById('btn_open'));
97+
});
98+
});
99+
$('btn_save').on('click', function (evt) {
100+
ajax({
101+
url: '/api/nodebase/nodepad/v1/save',
102+
json: {
103+
path: document.getElementById('txt_file').value,
104+
text: editor.getValue()
105+
}
106+
}, function (data) {
107+
green_border(document.getElementById('btn_save'));
108+
}, function () {
109+
red_border(document.getElementById('btn_save'));
110+
});
111+
});
112+
113+
function change_mode(filename) {
114+
var ext = filename.split('.'), mode;
115+
if (ext.length === 1) ext = '';
116+
else ext = ext[ext.length - 1];
117+
try {
118+
switch(ext) {
119+
case 'js': mode = 'ace/mode/javascript'; break;
120+
case 'html': mode = 'ace/mode/html'; break;
121+
case 'css': mode = 'ace/mode/css'; break;
122+
case 'java': mode = 'ace/mode/java'; break;
123+
case 'py': mode = 'ace/mode/python'; break;
124+
case 'rb': mode = 'ace/mode/ruby'; break;
125+
case 'json': mode = 'ace/mode/json'; break;
126+
case 'c': case 'cpp': case 'cc': case 'h': case 'hpp': case 'hh':
127+
mode = 'ace/mode/html'; break;
128+
default: mode = 'ace/mode/text';
129+
}
130+
var changeto = ace.require(mode);
131+
editor.session.setMode(new changeto.Mode());
132+
} catch (e) {
133+
console.log('cannot load mode: ', mode);
134+
}
135+
}
136+
</script>
137+
</body>
138+
</html>

modules/nodepad/static/plugin.js

Lines changed: 0 additions & 48 deletions
This file was deleted.

modules/nodepad/static/plugin/helloworld/index.html

Lines changed: 0 additions & 6 deletions
This file was deleted.

modules/nodepad/static/plugin/helloworld/index.js

Lines changed: 0 additions & 16 deletions
This file was deleted.

modules/nodepad/static/simple.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
<div class="container-fluid" id="view_plugin" style="margin-top:10px;"></div>
5555
</div>
5656
<script type="text/javascript" src="common.js"></script>
57-
<script type="text/javascript" src="plugin.js"></script>
5857
<script>
5958
var word_stop = [
6059
' ', '\t', '\n', '~', '`', '!', '@', '#', '$', '%', '^', '&', '*',
@@ -211,6 +210,8 @@
211210
});
212211
});
213212

213+
/*
214+
<!-- script type="text/javascript" src="plugin.js" /-->
214215
var plugin_subsys = plugin();
215216
$('btn_plugin_refresh').on('click', function (evt) {
216217
ajax({
@@ -231,6 +232,7 @@
231232
if (!val) return;
232233
plugin_subsys.load('__plugin__', '/plugin/' + val + '/index.js', null, true);
233234
});
235+
*/
234236
</script>
235237
</body>
236238
</html>

0 commit comments

Comments
 (0)