Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.toolbox
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kazuhiko Shiozaki
slapos.toolbox
Commits
56cb1129
Commit
56cb1129
authored
Oct 16, 2013
by
Alain Takoudjou
Committed by
Nicolas Wavrant
Feb 14, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix fileTreeView in slaprunner editor
parent
b74603bc
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
624 additions
and
593 deletions
+624
-593
slapos/runner/fileBrowser.py
slapos/runner/fileBrowser.py
+7
-7
slapos/runner/static/css/ui.fancytree.css
slapos/runner/static/css/ui.fancytree.css
+546
-520
slapos/runner/static/js/scripts/softwareFolder.js
slapos/runner/static/js/scripts/softwareFolder.js
+15
-11
slapos/runner/templates/softwareFolder.html
slapos/runner/templates/softwareFolder.html
+1
-1
slapos/runner/views.py
slapos/runner/views.py
+55
-54
No files found.
slapos/runner/fileBrowser.py
View file @
56cb1129
...
@@ -58,7 +58,7 @@ class FileBrowser(object):
...
@@ -58,7 +58,7 @@ class FileBrowser(object):
html += 'gsdirs.push(new gsItem("
2
", "
%
s
", "
%
s
", "
0
", "
%
s
", "
dir
", "
%
s
"));' % (f, ff, md5sum, mdate)
html += 'gsdirs.push(new gsItem("
2
", "
%
s
", "
%
s
", "
0
", "
%
s
", "
dir
", "
%
s
"));' % (f, ff, md5sum, mdate)
return html
return html
def fancylistDirs(self, dir, key, all=False):
def fancylistDirs(self, dir, key,
listfiles,
all=False):
dir = urllib.unquote(dir)
dir = urllib.unquote(dir)
realdir = realpath(self.config, dir)
realdir = realpath(self.config, dir)
if not realdir:
if not realdir:
...
@@ -73,18 +73,18 @@ class FileBrowser(object):
...
@@ -73,18 +73,18 @@ class FileBrowser(object):
ff = os.path.join(dir, f)
ff = os.path.join(dir, f)
realfile = os.path.join(realdir, f)
realfile = os.path.join(realdir, f)
identity = "
%
s
%
s
" % (key, i)
identity = "
%
s
%
s
" % (key, i)
if not os.path.isdir(realfile):
if os.path.isdir(realfile):
dirList.append({"
title
": f, "
key
": identity,
"
folder
":True, "
lazy
":True, "
path
": ff})
elif listfiles:
regex = re.compile("
(
^
.
*
)
\
.(.
*
)
", re.VERBOSE)
regex = re.compile("
(
^
.
*
)
\
.(.
*
)
", re.VERBOSE)
ext = regex.sub(r'
\
2
', f)
ext = regex.sub(r'
\
2
', f)
if ext == f:
if ext == f:
ext = ""
ext = ""
dirList.append({"
title
": f, "
key
": identity,
"
extraClasses
": "
ext_
"+ext, "
path
": ff})
else:
fileList.append({"
title
": f, "
key
": identity,
fileList.append({"
title
": f, "
key
": identity,
"
folder
":True, "
lazy
":True
, "
path
": ff})
"
extraClasses
": "
ext_
"+ext
, "
path
": ff})
i+=1
i+=1
return (
fileList + dir
List)
return (
dirList + file
List)
def makeDirectory(self, dir, filename):
def makeDirectory(self, dir, filename):
"""Create a directory"""
"""Create a directory"""
...
...
slapos/runner/static/css/ui.fancytree.css
View file @
56cb1129
This diff is collapsed.
Click to expand it.
slapos/runner/static/js/scripts/softwareFolder.js
View file @
56cb1129
...
@@ -11,7 +11,6 @@ $(document).ready(function () {
...
@@ -11,7 +11,6 @@ $(document).ready(function () {
CurrentMode
,
CurrentMode
,
script
=
"
/readFolder
"
,
script
=
"
/readFolder
"
,
softwareDisplay
=
true
,
softwareDisplay
=
true
,
fileTree
,
Mode
,
Mode
,
modes
,
modes
,
projectDir
=
$
(
"
input#project
"
).
val
(),
projectDir
=
$
(
"
input#project
"
).
val
(),
...
@@ -86,7 +85,7 @@ $(document).ready(function () {
...
@@ -86,7 +85,7 @@ $(document).ready(function () {
function
selectFile
(
file
)
{
function
selectFile
(
file
)
{
$
(
"
#info
"
).
empty
();
$
(
"
#info
"
).
empty
();
$
(
"
#info
"
).
append
(
"
Selection
:
"
+
file
);
$
(
"
#info
"
).
append
(
"
Current work tree
:
"
+
file
);
selection
=
file
;
selection
=
file
;
return
;
return
;
}
}
...
@@ -117,7 +116,7 @@ $(document).ready(function () {
...
@@ -117,7 +116,7 @@ $(document).ready(function () {
$
(
'
#fileTreeFull
'
).
hide
();
$
(
'
#fileTreeFull
'
).
hide
();
}
}
$
(
"
#info
"
).
empty
();
$
(
"
#info
"
).
empty
();
$
(
"
#info
"
).
append
(
"
Selection
:
"
+
base_path
());
$
(
"
#info
"
).
append
(
"
Current work tree
:
"
+
base_path
());
selection
=
""
;
selection
=
""
;
}
}
...
@@ -296,7 +295,7 @@ $(document).ready(function () {
...
@@ -296,7 +295,7 @@ $(document).ready(function () {
success
:
function
(
data
)
{
success
:
function
(
data
)
{
$
(
"
#inline_content
"
).
empty
();
$
(
"
#inline_content
"
).
empty
();
$
(
"
#inline_content
"
).
append
(
'
<h2 style="color: #4c6172; font: 18px
\'
Helvetica Neue
\'
, Helvetica, Arial, sans-serif;">Content of file:
'
+
$
(
"
#inline_content
"
).
append
(
'
<h2 style="color: #4c6172; font: 18px
\'
Helvetica Neue
\'
, Helvetica, Arial, sans-serif;">Content of file:
'
+
node
.
title
+
'
</h2>
'
);
node
.
title
+
'
</h2>
'
);
$
(
"
#inline_content
"
).
append
(
'
<br/><div class="main_content"><pre id="editorViewer"></pre></div>
'
);
$
(
"
#inline_content
"
).
append
(
'
<br/><div class="main_content"><pre id="editorViewer"></pre></div>
'
);
viewer
=
ace
.
edit
(
"
editorViewer
"
);
viewer
=
ace
.
edit
(
"
editorViewer
"
);
viewer
.
setTheme
(
"
ace/theme/crimson_editor
"
);
viewer
.
setTheme
(
"
ace/theme/crimson_editor
"
);
...
@@ -390,8 +389,11 @@ $(document).ready(function () {
...
@@ -390,8 +389,11 @@ $(document).ready(function () {
};
};
// --- Init fancytree during startup ----------------------------------------
// --- Init fancytree during startup ----------------------------------------
$
(
function
(){
function
initTree
(
tree
,
path
,
key
){
$
(
"
#fileTree
"
).
fancytree
({
if
(
!
key
){
key
=
'
0
'
;
}
$
(
tree
).
fancytree
({
activate
:
function
(
event
,
data
)
{
activate
:
function
(
event
,
data
)
{
var
node
=
data
.
node
;
var
node
=
data
.
node
;
},
},
...
@@ -404,14 +406,14 @@ $(document).ready(function () {
...
@@ -404,14 +406,14 @@ $(document).ready(function () {
},
},
source
:
{
source
:
{
url
:
$SCRIPT_ROOT
+
"
/fileBrowser
"
,
url
:
$SCRIPT_ROOT
+
"
/fileBrowser
"
,
data
:{
opt
:
20
,
dir
:
currentProject
,
key
:
0
},
data
:{
opt
:
20
,
dir
:
path
,
key
:
key
,
listfiles
:
'
yes
'
},
cache
:
false
cache
:
false
},
},
lazyload
:
function
(
event
,
data
)
{
lazyload
:
function
(
event
,
data
)
{
var
node
=
data
.
node
;
var
node
=
data
.
node
;
data
.
result
=
{
data
.
result
=
{
url
:
$SCRIPT_ROOT
+
"
/fileBrowser
"
,
url
:
$SCRIPT_ROOT
+
"
/fileBrowser
"
,
data
:
{
opt
:
20
,
dir
:
node
.
data
.
path
,
key
:
node
.
key
}
data
:
{
opt
:
20
,
dir
:
node
.
data
.
path
,
key
:
node
.
key
,
listfiles
:
'
yes
'
}
}
}
},
},
keydown
:
function
(
event
,
data
)
{
keydown
:
function
(
event
,
data
)
{
...
@@ -461,7 +463,7 @@ $(document).ready(function () {
...
@@ -461,7 +463,7 @@ $(document).ready(function () {
bindContextMenu
(
data
.
node
.
span
,
!
data
.
node
.
isFolder
());
bindContextMenu
(
data
.
node
.
span
,
!
data
.
node
.
isFolder
());
}
}
});
});
}
);
}
editor
.
setTheme
(
"
ace/theme/crimson_editor
"
);
editor
.
setTheme
(
"
ace/theme/crimson_editor
"
);
...
@@ -494,7 +496,9 @@ $(document).ready(function () {
...
@@ -494,7 +496,9 @@ $(document).ready(function () {
/*$('#fileTreeFull').fileTree({ root: currentProject, script: $SCRIPT_ROOT + script, folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false, selectFolder: true }, function (file) {
/*$('#fileTreeFull').fileTree({ root: currentProject, script: $SCRIPT_ROOT + script, folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false, selectFolder: true }, function (file) {
selectFile(file);
selectFile(file);
}, function (file) { openFile(file); });*/
}, function (file) { openFile(file); });*/
$
(
"
#info
"
).
append
(
"
Selection:
"
+
base_path
());
initTree
(
'
#fileTree
'
,
projectDir
,
'
pfolder
'
);
initTree
(
'
#fileTreeFull
'
,
currentProject
);
$
(
"
#info
"
).
append
(
"
Current work tree:
"
+
base_path
());
/*setDetailBox();*/
/*setDetailBox();*/
editor
.
on
(
"
change
"
,
function
(
e
)
{
editor
.
on
(
"
change
"
,
function
(
e
)
{
...
@@ -549,7 +553,7 @@ $(document).ready(function () {
...
@@ -549,7 +553,7 @@ $(document).ready(function () {
$
(
"
#clearselect
"
).
click
(
function
()
{
$
(
"
#clearselect
"
).
click
(
function
()
{
edit
=
false
;
edit
=
false
;
$
(
"
#info
"
).
empty
();
$
(
"
#info
"
).
empty
();
$
(
"
#info
"
).
append
(
"
Selection
:
"
+
base_path
());
$
(
"
#info
"
).
append
(
"
Current work tree
:
"
+
base_path
());
$
(
"
input#subfolder
"
).
val
(
""
);
$
(
"
input#subfolder
"
).
val
(
""
);
$
(
"
#edit_info
"
).
empty
();
$
(
"
#edit_info
"
).
empty
();
$
(
"
#edit_info
"
).
append
(
"
No file in editor
"
);
$
(
"
#edit_info
"
).
append
(
"
No file in editor
"
);
...
...
slapos/runner/templates/softwareFolder.html
View file @
56cb1129
...
@@ -48,7 +48,7 @@
...
@@ -48,7 +48,7 @@
</div>
</div>
<div
id=
"details_box"
>
<div
id=
"details_box"
>
<div
id=
"fileTree"
class=
"file_tree_short"
></div>
<div
id=
"fileTree"
class=
"file_tree_short"
></div>
<div
id=
"fileTreeFull"
style=
'display:none'
class=
"file_tree_short"
title=
"Double click to edit selected file..."
></div>
<div
id=
"fileTreeFull"
style=
'display:none'
class=
"file_tree_short"
></div>
</div>
</div>
</div>
</div>
<div
id=
"code"
>
<div
id=
"code"
>
...
...
slapos/runner/views.py
View file @
56cb1129
...
@@ -587,60 +587,61 @@ def fileBrowser():
...
@@ -587,60 +587,61 @@ def fileBrowser():
else
:
else
:
opt
=
int
(
request
.
args
.
get
(
'opt'
))
opt
=
int
(
request
.
args
.
get
(
'opt'
))
# try:
try
:
if
opt
==
1
:
if
opt
==
1
:
#list files and directories
#list files and directories
result
=
file_request
.
listDirs
(
dir
)
result
=
file_request
.
listDirs
(
dir
)
elif
opt
==
2
:
elif
opt
==
2
:
#Create file
#Create file
result
=
file_request
.
makeFile
(
dir
,
filename
)
result
=
file_request
.
makeFile
(
dir
,
filename
)
elif
opt
==
3
:
elif
opt
==
3
:
#Create directory
#Create directory
result
=
file_request
.
makeDirectory
(
dir
,
filename
)
result
=
file_request
.
makeDirectory
(
dir
,
filename
)
elif
opt
==
4
:
elif
opt
==
4
:
#Delete a list of files or/and directories
#Delete a list of files or/and directories
result
=
file_request
.
deleteItem
(
dir
,
files
)
result
=
file_request
.
deleteItem
(
dir
,
files
)
elif
opt
==
5
:
elif
opt
==
5
:
#copy a lis of files or/and directories
#copy a lis of files or/and directories
result
=
file_request
.
copyItem
(
dir
,
files
)
result
=
file_request
.
copyItem
(
dir
,
files
)
elif
opt
==
6
:
elif
opt
==
6
:
#rename file or directory
#rename file or directory
result
=
file_request
.
rename
(
dir
,
filename
,
newfilename
)
result
=
file_request
.
rename
(
dir
,
filename
,
newfilename
)
elif
opt
==
7
:
elif
opt
==
7
:
result
=
file_request
.
copyItem
(
dir
,
files
,
del_source
=
True
)
result
=
file_request
.
copyItem
(
dir
,
files
,
del_source
=
True
)
elif
opt
==
8
:
elif
opt
==
8
:
#donwload file
#donwload file
filename
=
request
.
args
.
get
(
'filename'
).
encode
(
'utf-8'
)
filename
=
request
.
args
.
get
(
'filename'
).
encode
(
'utf-8'
)
result
=
file_request
.
downloadFile
(
request
.
args
.
get
(
'dir'
).
encode
(
'utf-8'
),
result
=
file_request
.
downloadFile
(
request
.
args
.
get
(
'dir'
).
encode
(
'utf-8'
),
filename
)
filename
)
try
:
try
:
return
send_file
(
result
,
attachment_filename
=
filename
,
as_attachment
=
True
)
return
send_file
(
result
,
attachment_filename
=
filename
,
as_attachment
=
True
)
except
:
except
:
abort
(
404
)
abort
(
404
)
elif
opt
==
9
:
elif
opt
==
9
:
result
=
file_request
.
readFile
(
dir
,
filename
,
False
)
result
=
file_request
.
readFile
(
dir
,
filename
,
False
)
elif
opt
==
11
:
elif
opt
==
11
:
#Upload file
#Upload file
result
=
file_request
.
uploadFile
(
dir
,
request
.
files
)
result
=
file_request
.
uploadFile
(
dir
,
request
.
files
)
elif
opt
==
14
:
elif
opt
==
14
:
#Copy file or directory as ...
#Copy file or directory as ...
result
=
file_request
.
copyAsFile
(
dir
,
filename
,
newfilename
)
result
=
file_request
.
copyAsFile
(
dir
,
filename
,
newfilename
)
elif
opt
==
16
:
elif
opt
==
16
:
#zip file
#zip file
result
=
file_request
.
zipFile
(
dir
,
filename
,
newfilename
)
result
=
file_request
.
zipFile
(
dir
,
filename
,
newfilename
)
elif
opt
==
17
:
elif
opt
==
17
:
#zip file
#zip file
result
=
file_request
.
unzipFile
(
dir
,
filename
,
newfilename
)
result
=
file_request
.
unzipFile
(
dir
,
filename
,
newfilename
)
elif
opt
==
20
:
elif
opt
==
20
:
#Fancy Load folder
#Fancy Load folder
key
=
int
(
request
.
args
.
get
(
'key'
))
key
=
request
.
args
.
get
(
'key'
)
dir
=
request
.
args
.
get
(
'dir'
).
encode
(
'utf-8'
)
dir
=
request
.
args
.
get
(
'dir'
).
encode
(
'utf-8'
)
data
=
file_request
.
fancylistDirs
(
dir
,
key
)
listfiles
=
request
.
args
.
get
(
'listfiles'
,
''
)
result
=
json
.
dumps
(
data
)
data
=
file_request
.
fancylistDirs
(
dir
,
key
,
listfiles
)
else
:
result
=
json
.
dumps
(
data
)
result
=
"ARGS PARSE ERROR: Bad option..."
else
:
# except Exception as e:
result
=
"ARGS PARSE ERROR: Bad option..."
# return str(e)
except
Exception
as
e
:
return
str
(
e
)
return
result
return
result
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment