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
Xiaowu Zhang
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
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):
html += 'gsdirs.push(new gsItem("
2
", "
%
s
", "
%
s
", "
0
", "
%
s
", "
dir
", "
%
s
"));' % (f, ff, md5sum, mdate)
return html
def fancylistDirs(self, dir, key, all=False):
def fancylistDirs(self, dir, key,
listfiles,
all=False):
dir = urllib.unquote(dir)
realdir = realpath(self.config, dir)
if not realdir:
...
...
@@ -73,18 +73,18 @@ class FileBrowser(object):
ff = os.path.join(dir, f)
realfile = os.path.join(realdir, f)
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)
ext = regex.sub(r'
\
2
', f)
if ext == f:
ext = ""
dirList.append({"
title
": f, "
key
": identity,
"
extraClasses
": "
ext_
"+ext, "
path
": ff})
else:
fileList.append({"
title
": f, "
key
": identity,
"
folder
":True, "
lazy
":True
, "
path
": ff})
"
extraClasses
": "
ext_
"+ext
, "
path
": ff})
i+=1
return (
fileList + dir
List)
return (
dirList + file
List)
def makeDirectory(self, dir, filename):
"""Create a directory"""
...
...
slapos/runner/static/css/ui.fancytree.css
View file @
56cb1129
/*******************************************************************************
* Tree container
Lion colors:
gray highlight bar: #D4D4D4
blue highlight-bar and -border #3875D7
*/
.ui-helper-hidden
{
display
:
none
;
}
.fancytree-container
{
font-family
:
tahoma
,
arial
,
helvetica
;
font-size
:
10pt
;
/* font size should not be too big */
white-space
:
nowrap
;
padding
:
3px
;
margin
:
0
;
/* issue 201 */
background-color
:
white
;
overflow
:
auto
;
height
:
98%
;
/* issue 263 */
}
ul
.fancytree-container
ul
{
padding
:
0
0
0
16px
;
margin
:
0
;
}
ul
.fancytree-container
li
{
list-style-image
:
none
;
list-style-position
:
outside
;
list-style-type
:
none
;
-moz-background-clip
:
border
;
-moz-background-inline-policy
:
continuous
;
-moz-background-origin
:
padding
;
background-attachment
:
scroll
;
background-color
:
transparent
;
background-position
:
0
0
;
background-repeat
:
repeat-y
;
background-image
:
none
;
/* no v-lines */
margin
:
0
;
padding
:
4px
0
0
0
;
}
/* Suppress lines for last child node */
ul
.fancytree-container
li
.fancytree-lastsib
{
background-image
:
none
;
}
/* Suppress lines if level is fixed expanded (option minExpandLevel) */
ul
.fancytree-no-connector
>
li
{
background-image
:
none
;
}
/* Style, when control is disabled */
.ui-fancytree-disabled
ul
.fancytree-container
{
opacity
:
0.5
;
/* filter: alpha(opacity=50); /* Yields a css warning */
background-color
:
silver
;
}
/*******************************************************************************
* Common icon definitions
*/
span
.fancytree-empty
,
span
.fancytree-vline
,
/*span.fancytree-connector,*/
span
.fancytree-expander
,
span
.fancytree-icon
,
span
.fancytree-checkbox
,
span
.fancytree-radio
,
span
.fancytree-drag-helper-img
,
#fancytree-drop-marker
{
width
:
16px
;
height
:
16px
;
display
:
inline-block
;
/* Required to make a span sizable */
vertical-align
:
top
;
background-repeat
:
no-repeat
;
background-position
:
left
;
background-image
:
url("images/icons.gif")
;
background-position
:
0
0
;
}
/** Used by iconclass option */
span
.fancytree-custom-icon
{
display
:
inline-block
;
}
/** Used by 'icon' node option: */
.fancytree-container
img
{
width
:
16px
;
height
:
16px
;
margin-left
:
3px
;
vertical-align
:
top
;
border-style
:
none
;
}
/*******************************************************************************
* Lines and connectors
*/
/* span.fancytree-connector
{
background-image: none;
}
*/
/*******************************************************************************
* Expander icon
* Note: IE6 doesn't correctly evaluate multiples class names,
* so we create combined class names that can be used in the CSS.
*
* Prefix: fancytree-exp-
* 1st character: 'e': expanded, 'c': collapsed, 'n': no children
* 2nd character (optional): 'd': lazy (Delayed)
* 3rd character (optional): 'l': Last sibling
*/
span
.fancytree-expander
{
background-position
:
0px
-80px
;
cursor
:
pointer
;
}
span
.fancytree-expander
:hover
{
background-position
:
-16px
-80px
;
}
.fancytree-exp-n
span
.fancytree-expander
:hover
/* Collapsed, not delayed, not last sibling */
{
background-position
:
-16px
-80px
;
}
.fancytree-exp-cl
span
.fancytree-expander
/* Collapsed, not delayed, last sibling */
{
}
.fancytree-exp-cd
span
.fancytree-expander
/* Collapsed, delayed, not last sibling */
{
}
.fancytree-exp-cdl
span
.fancytree-expander
/* Collapsed, delayed, last sibling */
{
}
.fancytree-exp-e
span
.fancytree-expander
,
/* Expanded, not delayed, not last sibling */
.fancytree-exp-ed
span
.fancytree-expander
,
/* Expanded, delayed, not last sibling */
.fancytree-exp-el
span
.fancytree-expander
,
/* Expanded, not delayed, last sibling */
.fancytree-exp-edl
span
.fancytree-expander
/* Expanded, delayed, last sibling */
{
background-position
:
-32px
-80px
;
}
.fancytree-exp-e
span
.fancytree-expander
:hover
,
/* Expanded, not delayed, not last sibling */
.fancytree-exp-ed
span
.fancytree-expander
:hover
,
/* Expanded, delayed, not last sibling */
.fancytree-exp-el
span
.fancytree-expander
:hover
,
/* Expanded, not delayed, last sibling */
.fancytree-exp-edl
span
.fancytree-expander
:hover
/* Expanded, delayed, last sibling */
{
background-position
:
-48px
-80px
;
}
.fancytree-loading
span
.fancytree-expander
/* 'Loading' status overrides all others */
{
background-position
:
0
0
;
background-image
:
url("images/loading-min.gif")
;
}
.fancytree-exp-n
span
.fancytree-expander
,
/* Connector instead of expander, if node has no children */
.fancytree-exp-nl
span
.fancytree-expander
{
background-image
:
none
;
cursor
:
default
;
}
/*******************************************************************************
* Checkbox icon
*/
span
.fancytree-checkbox
{
margin-left
:
3px
;
background-position
:
0px
-32px
;
}
span
.fancytree-checkbox
:hover
{
background-position
:
-16px
-32px
;
}
.fancytree-partsel
span
.fancytree-checkbox
{
background-position
:
-64px
-32px
;
}
.fancytree-partsel
span
.fancytree-checkbox
:hover
{
background-position
:
-80px
-32px
;
}
.fancytree-selected
span
.fancytree-checkbox
{
background-position
:
-32px
-32px
;
}
.fancytree-selected
span
.fancytree-checkbox
:hover
{
background-position
:
-48px
-32px
;
}
/*******************************************************************************
* Radiobutton icon
*/
.fancytree-radio
span
.fancytree-checkbox
{
margin-left
:
3px
;
background-position
:
0px
-48px
;
}
.fancytree-radio
span
.fancytree-checkbox
:hover
{
background-position
:
-16px
-48px
;
}
.fancytree-radio
.fancytree-partsel
span
.fancytree-checkbox
{
background-position
:
-64px
-48px
;
}
.fancytree-radio
.fancytree-partsel
span
.fancytree-checkbox
:hover
{
background-position
:
-80px
-48px
;
}
.fancytree-radio
.fancytree-selected
span
.fancytree-checkbox
{
background-position
:
-32px
-48px
;
}
.fancytree-radio
.fancytree-selected
span
.fancytree-checkbox
:hover
{
background-position
:
-48px
-48px
;
}
/*******************************************************************************
* Node type icon
* Note: IE6 doesn't correctly evaluate multiples class names,
* so we create combined class names that can be used in the CSS.
*
* Prefix: fancytree-ico-
* 1st character: 'e': expanded, 'c': collapsed
* 2nd character (optional): 'f': folder
*/
span
.fancytree-icon
/* Default icon */
{
margin-left
:
3px
;
background-position
:
0px
0px
;
}
.fancytree-ico-cf
span
.fancytree-icon
{
background
:
url(images/directory.min.png)
left
top
no-repeat
;
width
:
22px
;}
/*background-position: 0px -16px; } /* Collapsed Folder */
.fancytree-ico-ef
span
.fancytree-icon
{
background
:
url(images/folder_open.min.png)
left
top
no-repeat
;
width
:
22px
;
height
:
18px
;}
/* Expanded Folder */
.fancytree-statusnode-wait
span
.fancytree-icon
{
background-image
:
url("images/loading-min.gif")
;
}
/* Status node icons */
.fancytree-statusnode-error
span
.fancytree-icon
{
background-position
:
0px
-112px
;
}
/* File Extensions*/
.ext_3gp
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_afp
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_afpa
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_asp
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_aspx
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_avi
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_bat
span
.fancytree-icon
{
background
:
url(images/application.png)
left
top
no-repeat
;
}
span
.ext_bmp
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_c
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_cfg
span
.fancytree-icon
{
background
:
url(images/cfg.png)
left
top
no-repeat
;
}
span
.ext_cfm
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_cgi
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_com
span
.fancytree-icon
{
background
:
url(images/application.png)
left
top
no-repeat
;
}
span
.ext_cpp
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_css
span
.fancytree-icon
{
background
:
url(images/css.png)
left
top
no-repeat
;
}
span
.ext_doc
span
.fancytree-icon
{
background
:
url(images/doc.png)
left
top
no-repeat
;
}
span
.ext_exe
span
.fancytree-icon
{
background
:
url(images/application.png)
left
top
no-repeat
;
}
span
.ext_gif
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_fla
span
.fancytree-icon
{
background
:
url(images/flash.png)
left
top
no-repeat
;
}
span
.ext_h
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_htm
span
.fancytree-icon
{
background
:
url(images/html.png)
left
top
no-repeat
;
}
span
.ext_html
span
.fancytree-icon
{
background
:
url(images/html.png)
left
top
no-repeat
;
}
span
.ext_jar
span
.fancytree-icon
{
background
:
url(images/java.png)
left
top
no-repeat
;
}
span
.ext_jpg
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_jpeg
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_js
span
.fancytree-icon
{
background
:
url(images/script.png)
left
top
no-repeat
;
}
span
.ext_lasso
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_log
span
.fancytree-icon
{
background
:
url(images/txt.png)
left
top
no-repeat
;
}
span
.ext_m4p
span
.fancytree-icon
{
background
:
url(images/music.png)
left
top
no-repeat
;
}
span
.ext_mov
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_mp3
span
.fancytree-icon
{
background
:
url(images/music.png)
left
top
no-repeat
;
}
span
.ext_mp4
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_mpg
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_mpeg
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_ogg
span
.fancytree-icon
{
background
:
url(images/music.png)
left
top
no-repeat
;
}
span
.ext_pcx
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_pdf
span
.fancytree-icon
{
background
:
url(images/pdf.png)
left
top
no-repeat
;
}
span
.ext_php
span
.fancytree-icon
{
background
:
url(images/php.png)
left
top
no-repeat
;
}
span
.ext_png
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_ppt
span
.fancytree-icon
{
background
:
url(images/ppt.png)
left
top
no-repeat
;
}
span
.ext_psd
span
.fancytree-icon
{
background
:
url(images/psd.png)
left
top
no-repeat
;
}
span
.ext_pl
span
.fancytree-icon
{
background
:
url(images/script.png)
left
top
no-repeat
;
}
span
.ext_py
span
.fancytree-icon
{
background
:
url(images/script.png)
left
top
no-repeat
;
}
span
.ext_rb
span
.fancytree-icon
{
background
:
url(images/ruby.png)
left
top
no-repeat
;
}
span
.ext_rbx
span
.fancytree-icon
{
background
:
url(images/ruby.png)
left
top
no-repeat
;
}
span
.ext_rhtml
span
.fancytree-icon
{
background
:
url(images/ruby.png)
left
top
no-repeat
;
}
span
.ext_rpm
span
.fancytree-icon
{
background
:
url(images/linux.png)
left
top
no-repeat
;
}
span
.ext_ruby
span
.fancytree-icon
{
background
:
url(images/ruby.png)
left
top
no-repeat
;
}
span
.ext_sql
span
.fancytree-icon
{
background
:
url(images/db.png)
left
top
no-repeat
;
}
span
.ext_swf
span
.fancytree-icon
{
background
:
url(images/flash.png)
left
top
no-repeat
;
}
span
.ext_tif
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_tiff
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_txt
span
.fancytree-icon
{
background
:
url(images/txt.png)
left
top
no-repeat
;
}
span
.ext_vb
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_wav
span
.fancytree-icon
{
background
:
url(images/music.png)
left
top
no-repeat
;
}
span
.ext_wmv
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_xls
span
.fancytree-icon
{
background
:
url(images/xls.png)
left
top
no-repeat
;
}
span
.ext_xml
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_zip
span
.fancytree-icon
{
background
:
url(images/zip.png)
left
top
no-repeat
;
}
/*******************************************************************************
* Node titles
*/
.fancytree-title
{
display
:
inline-block
;
/* Better alignment, when title contains <br> */
padding-left
:
3px
;
padding-right
:
3px
;
/* Otherwise italic font will be outside bounds */
color
:
black
;
/* inherit doesn't work on IE */
vertical-align
:
top
;
margin
:
0px
;
margin-left
:
3px
;
/* border: 1px solid white; /* reserve some space for status borders (Note: 'transparent' would not work in IE6) */
border
:
1px
solid
transparent
;
/* reserve some space for status borders */
border-radius
:
0
;
text-decoration
:
none
;
cursor
:
pointer
;
}
span
.fancytree-focused
.fancytree-title
{
/*outline: 1px dotted black;*/
color
:
white
;
}
span
.fancytree-selected
.fancytree-title
,
span
.fancytree-active
.fancytree-title
{
background-color
:
#D4D4D4
;
/*gray*/
}
span
.fancytree-selected
.fancytree-title
{
font-style
:
italic
;
}
.fancytree-focused
span
.fancytree-selected
.fancytree-title
,
.fancytree-focused
span
.fancytree-active
.fancytree-title
{
color
:
white
;
background-color
:
#3875D7
;
/*blue*/
}
/*******************************************************************************
* 'table' extension
*/
/*
table.fancytree-ext-table {
border-collapse: collapse;
width: 100%;
}
table.fancytree-ext-table tbody tr:nth-child(even){
background-color: #f4f4f8;
}
table.fancytree-ext-table tbody tr td {
border: 1px solid lightgray;
}
*/
table
.fancytree-ext-table
{
border-collapse
:
collapse
;
}
table
.fancytree-ext-table
tbody
tr
.fancytree-focused
{
background-color
:
#99DEFD
;
}
table
.fancytree-ext-table
tbody
tr
.fancytree-active
{
background-color
:
royalblue
;
}
table
.fancytree-ext-table
tbody
tr
.fancytree-selected
{
background-color
:
#99FDDE
;
}
/*******************************************************************************
* 'columnview' extension
*/
/*
table.fancytree-ext-columnview {
border-collapse: collapse;
width: 100%;
}
*/
table
.fancytree-ext-columnview
td
>
ul
{
padding
:
0
;
}
table
.fancytree-ext-columnview
td
>
ul
li
{
list-style-image
:
none
;
list-style-position
:
outside
;
list-style-type
:
none
;
-moz-background-clip
:
border
;
-moz-background-inline-policy
:
continuous
;
-moz-background-origin
:
padding
;
background-attachment
:
scroll
;
background-color
:
transparent
;
background-position
:
0
0
;
background-repeat
:
repeat-y
;
background-image
:
none
;
/* no v-lines */
margin
:
0
;
padding
:
1px
0
0
0
;
}
/*
table.fancytree-ext-columnview tbody tr[0] {
height: 200px;
}
*/
table
.fancytree-ext-columnview
tbody
tr
td
{
border
:
1px
solid
gray
;
vertical-align
:
top
;
overflow
:
auto
;
}
table
.fancytree-ext-columnview
span
.fancytree-node
{
display
:
inline-block
;
position
:
relative
;
/* allow positioning of embedded spans*/
width
:
100%
;
}
table
.fancytree-ext-columnview
span
.fancytree-node
a
{
border
:
1px
solid
transparent
;
background-color
:
transparent
;
}
table
.fancytree-ext-columnview
span
.fancytree-node.fancytree-expanded
{
background-color
:
#ccc
;
}
table
.fancytree-ext-columnview
span
.fancytree-node.fancytree-active
{
background-color
:
royalblue
;
}
table
.fancytree-ext-columnview
span
.fancytree-cv-right
{
background-position
:
0px
-80px
;
position
:
absolute
;
right
:
3px
;
}
/*******************************************************************************
* 'filter' extension
*/
.fancytree-ext-filter
span
.fancytree-node
.fancytree-title
{
color
:
silver
;
font-weight
:
lighter
;
}
.fancytree-ext-filter
span
.fancytree-node.fancytree-submatch
.fancytree-title
{
color
:
black
;
font-weight
:
normal
;
}
.fancytree-ext-filter
span
.fancytree-node.fancytree-match
.fancytree-title
{
color
:
black
;
font-weight
:
bold
;
}
/*******************************************************************************
* Drag'n'drop support
*/
/*** Helper object ************************************************************/
div
.fancytree-drag-helper
{
}
div
.fancytree-drag-helper
a
{
border
:
1px
solid
gray
;
background-color
:
white
;
padding-left
:
5px
;
padding-right
:
5px
;
opacity
:
0.8
;
}
span
.fancytree-drag-helper-img
{
/*
position: relative;
left: -16px;
*/
}
div
.fancytree-drag-helper
/*.fancytree-drop-accept*/
{
/* border-color: green;
background-color: red;*/
}
div
.fancytree-drop-accept
span
.fancytree-drag-helper-img
{
background-position
:
-32px
-112px
;
}
div
.fancytree-drag-helper.fancytree-drop-reject
{
border-color
:
red
;
}
div
.fancytree-drop-reject
span
.fancytree-drag-helper-img
{
background-position
:
-16px
-112px
;
}
/*** Drop marker icon *********************************************************/
#fancytree-drop-marker
{
width
:
24px
;
position
:
absolute
;
background-position
:
0
-128px
;
margin
:
0
;
}
#fancytree-drop-marker
.fancytree-drop-after
,
#fancytree-drop-marker
.fancytree-drop-before
{
width
:
64px
;
background-position
:
0
-144px
;
}
#fancytree-drop-marker
.fancytree-drop-copy
{
background-position
:
-64px
-128px
;
}
#fancytree-drop-marker
.fancytree-drop-move
{
background-position
:
-64px
-128px
;
}
/*** Source node while dragging ***********************************************/
span
.fancytree-drag-source
{
/* border: 1px dotted gray; */
background-color
:
#e0e0e0
;
}
span
.fancytree-drag-source
a
{
color
:
gray
;
}
/*** Target node while dragging cursor is over it *****************************/
span
.fancytree-drop-target
{
/*border: 1px solid gray;*/
}
span
.fancytree-drop-target
a
{
}
span
.fancytree-drop-target.fancytree-drop-accept
a
{
/*border: 1px solid green;*/
background-color
:
#3169C6
!important
;
color
:
white
!important
;
/* @ IE6 */
text-decoration
:
none
;
}
span
.fancytree-drop-target.fancytree-drop-reject
{
/*border: 1px solid red;*/
}
span
.fancytree-drop-target.fancytree-drop-after
a
{
}
/*******************************************************************************
* Tree container
Lion colors:
gray highlight bar: #D4D4D4
blue highlight-bar and -border #3875D7
*/
.ui-helper-hidden
{
display
:
none
;
}
.fancytree-container
{
font-family
:
tahoma
,
arial
,
helvetica
;
font-size
:
10pt
;
/* font size should not be too big */
white-space
:
nowrap
;
padding
:
3px
;
margin
:
0
;
/* issue 201 */
background-color
:
white
;
overflow
:
auto
;
height
:
98%
;
/* issue 263 */
}
ul
.fancytree-container
ul
{
padding
:
0
0
0
16px
;
margin
:
0
;
}
ul
.fancytree-container
li
{
list-style-image
:
none
;
list-style-position
:
outside
;
list-style-type
:
none
;
-moz-background-clip
:
border
;
-moz-background-inline-policy
:
continuous
;
-moz-background-origin
:
padding
;
background-attachment
:
scroll
;
background-color
:
transparent
;
background-position
:
0
0
;
background-repeat
:
repeat-y
;
background-image
:
none
;
/* no v-lines */
margin
:
0
;
padding
:
4px
0
0
0
;
}
/* Suppress lines for last child node */
ul
.fancytree-container
li
.fancytree-lastsib
{
background-image
:
none
;
}
/* Suppress lines if level is fixed expanded (option minExpandLevel) */
ul
.fancytree-no-connector
>
li
{
background-image
:
none
;
}
/* Style, when control is disabled */
.ui-fancytree-disabled
ul
.fancytree-container
{
opacity
:
0.5
;
/* filter: alpha(opacity=50); /* Yields a css warning */
background-color
:
silver
;
}
span
.fancytree-node
{
display
:
inline-block
;
width
:
100%
;
border
:
1px
solid
transparent
;
}
/*******************************************************************************
* Common icon definitions
*/
span
.fancytree-empty
,
span
.fancytree-vline
,
/*span.fancytree-connector,*/
span
.fancytree-expander
,
span
.fancytree-icon
,
span
.fancytree-checkbox
,
span
.fancytree-radio
,
span
.fancytree-drag-helper-img
,
#fancytree-drop-marker
{
width
:
16px
;
height
:
16px
;
display
:
inline-block
;
/* Required to make a span sizable */
vertical-align
:
top
;
background-repeat
:
no-repeat
;
background-position
:
left
;
background-image
:
url("images/icons.gif")
;
background-position
:
0
0
;
}
/** Used by iconclass option */
span
.fancytree-custom-icon
{
display
:
inline-block
;
}
/** Used by 'icon' node option: */
.fancytree-container
img
{
width
:
16px
;
height
:
16px
;
margin-left
:
3px
;
vertical-align
:
top
;
border-style
:
none
;
}
/*******************************************************************************
* Lines and connectors
*/
/* span.fancytree-connector
{
background-image: none;
}
*/
/*******************************************************************************
* Expander icon
* Note: IE6 doesn't correctly evaluate multiples class names,
* so we create combined class names that can be used in the CSS.
*
* Prefix: fancytree-exp-
* 1st character: 'e': expanded, 'c': collapsed, 'n': no children
* 2nd character (optional): 'd': lazy (Delayed)
* 3rd character (optional): 'l': Last sibling
*/
span
.fancytree-expander
{
background-position
:
0px
-80px
;
cursor
:
pointer
;
}
span
.fancytree-expander
:hover
{
background-position
:
-16px
-80px
;
}
.fancytree-exp-n
span
.fancytree-expander
:hover
/* Collapsed, not delayed, not last sibling */
{
background-position
:
-16px
-80px
;
}
.fancytree-exp-cl
span
.fancytree-expander
/* Collapsed, not delayed, last sibling */
{
}
.fancytree-exp-cd
span
.fancytree-expander
/* Collapsed, delayed, not last sibling */
{
}
.fancytree-exp-cdl
span
.fancytree-expander
/* Collapsed, delayed, last sibling */
{
}
.fancytree-exp-e
span
.fancytree-expander
,
/* Expanded, not delayed, not last sibling */
.fancytree-exp-ed
span
.fancytree-expander
,
/* Expanded, delayed, not last sibling */
.fancytree-exp-el
span
.fancytree-expander
,
/* Expanded, not delayed, last sibling */
.fancytree-exp-edl
span
.fancytree-expander
/* Expanded, delayed, last sibling */
{
background-position
:
-32px
-80px
;
}
.fancytree-exp-e
span
.fancytree-expander
:hover
,
/* Expanded, not delayed, not last sibling */
.fancytree-exp-ed
span
.fancytree-expander
:hover
,
/* Expanded, delayed, not last sibling */
.fancytree-exp-el
span
.fancytree-expander
:hover
,
/* Expanded, not delayed, last sibling */
.fancytree-exp-edl
span
.fancytree-expander
:hover
/* Expanded, delayed, last sibling */
{
background-position
:
-48px
-80px
;
}
.fancytree-loading
span
.fancytree-expander
/* 'Loading' status overrides all others */
{
background-position
:
0
0
;
background-image
:
url("images/loading-min.gif")
;
}
.fancytree-exp-n
span
.fancytree-expander
,
/* Connector instead of expander, if node has no children */
.fancytree-exp-nl
span
.fancytree-expander
{
background-image
:
none
;
cursor
:
default
;
}
/*******************************************************************************
* Checkbox icon
*/
span
.fancytree-checkbox
{
margin-left
:
3px
;
background-position
:
0px
-32px
;
}
span
.fancytree-checkbox
:hover
{
background-position
:
-16px
-32px
;
}
.fancytree-partsel
span
.fancytree-checkbox
{
background-position
:
-64px
-32px
;
}
.fancytree-partsel
span
.fancytree-checkbox
:hover
{
background-position
:
-80px
-32px
;
}
.fancytree-selected
span
.fancytree-checkbox
{
background-position
:
-32px
-32px
;
}
.fancytree-selected
span
.fancytree-checkbox
:hover
{
background-position
:
-48px
-32px
;
}
/*******************************************************************************
* Radiobutton icon
*/
.fancytree-radio
span
.fancytree-checkbox
{
margin-left
:
3px
;
background-position
:
0px
-48px
;
}
.fancytree-radio
span
.fancytree-checkbox
:hover
{
background-position
:
-16px
-48px
;
}
.fancytree-radio
.fancytree-partsel
span
.fancytree-checkbox
{
background-position
:
-64px
-48px
;
}
.fancytree-radio
.fancytree-partsel
span
.fancytree-checkbox
:hover
{
background-position
:
-80px
-48px
;
}
.fancytree-radio
.fancytree-selected
span
.fancytree-checkbox
{
background-position
:
-32px
-48px
;
}
.fancytree-radio
.fancytree-selected
span
.fancytree-checkbox
:hover
{
background-position
:
-48px
-48px
;
}
/*******************************************************************************
* Node type icon
* Note: IE6 doesn't correctly evaluate multiples class names,
* so we create combined class names that can be used in the CSS.
*
* Prefix: fancytree-ico-
* 1st character: 'e': expanded, 'c': collapsed
* 2nd character (optional): 'f': folder
*/
span
.fancytree-icon
/* Default icon */
{
margin-left
:
3px
;
margin-top
:
1px
;
background-position
:
0px
0px
;
}
.fancytree-ico-cf
span
.fancytree-icon
{
background
:
url(images/directory.min.png)
left
top
no-repeat
;
width
:
22px
;}
/*background-position: 0px -16px; } /* Collapsed Folder */
.fancytree-ico-ef
span
.fancytree-icon
{
background
:
url(images/folder_open.min.png)
left
top
no-repeat
;
width
:
22px
;
height
:
18px
;}
/* Expanded Folder */
.fancytree-statusnode-wait
span
.fancytree-icon
{
background-image
:
url("images/loading-min.gif")
;
}
/* Status node icons */
.fancytree-statusnode-error
span
.fancytree-icon
{
background-position
:
0px
-112px
;
}
/* File Extensions*/
.ext_3gp
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_afp
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_afpa
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_asp
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_aspx
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_avi
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_bat
span
.fancytree-icon
{
background
:
url(images/application.png)
left
top
no-repeat
;
}
span
.ext_bmp
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_c
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_cfg
span
.fancytree-icon
{
background
:
url(images/cfg.png)
left
top
no-repeat
;
}
span
.ext_cfm
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_cgi
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_com
span
.fancytree-icon
{
background
:
url(images/application.png)
left
top
no-repeat
;
}
span
.ext_cpp
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_css
span
.fancytree-icon
{
background
:
url(images/css.png)
left
top
no-repeat
;
}
span
.ext_doc
span
.fancytree-icon
{
background
:
url(images/doc.png)
left
top
no-repeat
;
}
span
.ext_exe
span
.fancytree-icon
{
background
:
url(images/application.png)
left
top
no-repeat
;
}
span
.ext_gif
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_fla
span
.fancytree-icon
{
background
:
url(images/flash.png)
left
top
no-repeat
;
}
span
.ext_h
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_htm
span
.fancytree-icon
{
background
:
url(images/html.png)
left
top
no-repeat
;
}
span
.ext_html
span
.fancytree-icon
{
background
:
url(images/html.png)
left
top
no-repeat
;
}
span
.ext_jar
span
.fancytree-icon
{
background
:
url(images/java.png)
left
top
no-repeat
;
}
span
.ext_jpg
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_jpeg
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_js
span
.fancytree-icon
{
background
:
url(images/script.png)
left
top
no-repeat
;
}
span
.ext_lasso
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_log
span
.fancytree-icon
{
background
:
url(images/txt.png)
left
top
no-repeat
;
}
span
.ext_m4p
span
.fancytree-icon
{
background
:
url(images/music.png)
left
top
no-repeat
;
}
span
.ext_mov
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_mp3
span
.fancytree-icon
{
background
:
url(images/music.png)
left
top
no-repeat
;
}
span
.ext_mp4
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_mpg
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_mpeg
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_ogg
span
.fancytree-icon
{
background
:
url(images/music.png)
left
top
no-repeat
;
}
span
.ext_pcx
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_pdf
span
.fancytree-icon
{
background
:
url(images/pdf.png)
left
top
no-repeat
;
}
span
.ext_php
span
.fancytree-icon
{
background
:
url(images/php.png)
left
top
no-repeat
;
}
span
.ext_png
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_ppt
span
.fancytree-icon
{
background
:
url(images/ppt.png)
left
top
no-repeat
;
}
span
.ext_psd
span
.fancytree-icon
{
background
:
url(images/psd.png)
left
top
no-repeat
;
}
span
.ext_pl
span
.fancytree-icon
{
background
:
url(images/script.png)
left
top
no-repeat
;
}
span
.ext_py
span
.fancytree-icon
{
background
:
url(images/script.png)
left
top
no-repeat
;
}
span
.ext_rb
span
.fancytree-icon
{
background
:
url(images/ruby.png)
left
top
no-repeat
;
}
span
.ext_rbx
span
.fancytree-icon
{
background
:
url(images/ruby.png)
left
top
no-repeat
;
}
span
.ext_rhtml
span
.fancytree-icon
{
background
:
url(images/ruby.png)
left
top
no-repeat
;
}
span
.ext_rpm
span
.fancytree-icon
{
background
:
url(images/linux.png)
left
top
no-repeat
;
}
span
.ext_ruby
span
.fancytree-icon
{
background
:
url(images/ruby.png)
left
top
no-repeat
;
}
span
.ext_sql
span
.fancytree-icon
{
background
:
url(images/db.png)
left
top
no-repeat
;
}
span
.ext_swf
span
.fancytree-icon
{
background
:
url(images/flash.png)
left
top
no-repeat
;
}
span
.ext_tif
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_tiff
span
.fancytree-icon
{
background
:
url(images/picture.png)
left
top
no-repeat
;
}
span
.ext_txt
span
.fancytree-icon
{
background
:
url(images/txt.png)
left
top
no-repeat
;
}
span
.ext_vb
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_wav
span
.fancytree-icon
{
background
:
url(images/music.png)
left
top
no-repeat
;
}
span
.ext_wmv
span
.fancytree-icon
{
background
:
url(images/film.png)
left
top
no-repeat
;
}
span
.ext_xls
span
.fancytree-icon
{
background
:
url(images/xls.png)
left
top
no-repeat
;
}
span
.ext_xml
span
.fancytree-icon
{
background
:
url(images/code.png)
left
top
no-repeat
;
}
span
.ext_zip
span
.fancytree-icon
{
background
:
url(images/zip.png)
left
top
no-repeat
;
}
/*******************************************************************************
* Node titles
*/
.fancytree-title
{
display
:
inline-block
;
/* Better alignment, when title contains <br> */
padding-left
:
3px
;
padding-right
:
3px
;
/* Otherwise italic font will be outside bounds */
color
:
black
;
/* inherit doesn't work on IE */
vertical-align
:
top
;
margin
:
0px
;
margin-left
:
3px
;
/* border: 1px solid white; /* reserve some space for status borders (Note: 'transparent' would not work in IE6) */
border
:
1px
solid
transparent
;
/* reserve some space for status borders */
border-radius
:
0
;
text-decoration
:
none
;
cursor
:
pointer
;
}
span
.fancytree-focused
.fancytree-title
{
/*outline: 1px dotted black;*/
/*color: white;*/
}
span
.fancytree-selected
.fancytree-title
,
span
.fancytree-active
.fancytree-title
{
/*background-color: #D4D4D4; /*gray*/
}
span
.fancytree-selected
.fancytree-title
{
font-style
:
italic
;
}
.fancytree-focused
span
.fancytree-selected
.fancytree-title
,
.fancytree-focused
span
.fancytree-active
.fancytree-title
{
/*color: white;
background-color: #3875D7; /*blue*/
}
span
.fancytree-node
:hover
{
background-color
:
#BDF
;
border-color
:
#70C0E7
;
cursor
:
pointer
;
}
.fancytree-container.fancytree-focused
span
.fancytree-node.fancytree-focused
{
border-color
:
#3399FF
;
/* outline: 1px solid #3399FF; */
}
span
.fancytree-node.fancytree-active
,
span
.fancytree-node.fancytree-selected
{
/* active/selcted nodes inside inactive tree */
background-color
:
#F7F7F7
;
border-color
:
#DEDEDE
;
}
/*******************************************************************************
* 'table' extension
*/
/*
table.fancytree-ext-table {
border-collapse: collapse;
width: 100%;
}
table.fancytree-ext-table tbody tr:nth-child(even){
background-color: #f4f4f8;
}
table.fancytree-ext-table tbody tr td {
border: 1px solid lightgray;
}
*/
table
.fancytree-ext-table
{
border-collapse
:
collapse
;
}
table
.fancytree-ext-table
tbody
tr
.fancytree-focused
{
background-color
:
#99DEFD
;
}
table
.fancytree-ext-table
tbody
tr
.fancytree-active
{
background-color
:
royalblue
;
}
table
.fancytree-ext-table
tbody
tr
.fancytree-selected
{
background-color
:
#99FDDE
;
}
/*******************************************************************************
* 'columnview' extension
*/
/*
table.fancytree-ext-columnview {
border-collapse: collapse;
width: 100%;
}
*/
table
.fancytree-ext-columnview
td
>
ul
{
padding
:
0
;
}
table
.fancytree-ext-columnview
td
>
ul
li
{
list-style-image
:
none
;
list-style-position
:
outside
;
list-style-type
:
none
;
-moz-background-clip
:
border
;
-moz-background-inline-policy
:
continuous
;
-moz-background-origin
:
padding
;
background-attachment
:
scroll
;
background-color
:
transparent
;
background-position
:
0
0
;
background-repeat
:
repeat-y
;
background-image
:
none
;
/* no v-lines */
margin
:
0
;
padding
:
1px
0
0
0
;
}
/*
table.fancytree-ext-columnview tbody tr[0] {
height: 200px;
}
*/
table
.fancytree-ext-columnview
tbody
tr
td
{
border
:
1px
solid
gray
;
vertical-align
:
top
;
overflow
:
auto
;
}
table
.fancytree-ext-columnview
span
.fancytree-node
{
display
:
inline-block
;
position
:
relative
;
/* allow positioning of embedded spans*/
width
:
100%
;
}
table
.fancytree-ext-columnview
span
.fancytree-node
a
{
border
:
1px
solid
transparent
;
background-color
:
transparent
;
}
table
.fancytree-ext-columnview
span
.fancytree-node.fancytree-expanded
{
background-color
:
#ccc
;
}
table
.fancytree-ext-columnview
span
.fancytree-node.fancytree-active
{
background-color
:
royalblue
;
}
table
.fancytree-ext-columnview
span
.fancytree-cv-right
{
background-position
:
0px
-80px
;
position
:
absolute
;
right
:
3px
;
}
/*******************************************************************************
* 'filter' extension
*/
.fancytree-ext-filter
span
.fancytree-node
.fancytree-title
{
color
:
silver
;
font-weight
:
lighter
;
}
.fancytree-ext-filter
span
.fancytree-node.fancytree-submatch
.fancytree-title
{
color
:
black
;
font-weight
:
normal
;
}
.fancytree-ext-filter
span
.fancytree-node.fancytree-match
.fancytree-title
{
color
:
black
;
font-weight
:
bold
;
}
/*******************************************************************************
* Drag'n'drop support
*/
/*** Helper object ************************************************************/
div
.fancytree-drag-helper
{
}
div
.fancytree-drag-helper
a
{
border
:
1px
solid
gray
;
background-color
:
white
;
padding-left
:
5px
;
padding-right
:
5px
;
opacity
:
0.8
;
}
span
.fancytree-drag-helper-img
{
/*
position: relative;
left: -16px;
*/
}
div
.fancytree-drag-helper
/*.fancytree-drop-accept*/
{
/* border-color: green;
background-color: red;*/
}
div
.fancytree-drop-accept
span
.fancytree-drag-helper-img
{
background-position
:
-32px
-112px
;
}
div
.fancytree-drag-helper.fancytree-drop-reject
{
border-color
:
red
;
}
div
.fancytree-drop-reject
span
.fancytree-drag-helper-img
{
background-position
:
-16px
-112px
;
}
/*** Drop marker icon *********************************************************/
#fancytree-drop-marker
{
width
:
24px
;
position
:
absolute
;
background-position
:
0
-128px
;
margin
:
0
;
}
#fancytree-drop-marker
.fancytree-drop-after
,
#fancytree-drop-marker
.fancytree-drop-before
{
width
:
64px
;
background-position
:
0
-144px
;
}
#fancytree-drop-marker
.fancytree-drop-copy
{
background-position
:
-64px
-128px
;
}
#fancytree-drop-marker
.fancytree-drop-move
{
background-position
:
-64px
-128px
;
}
/*** Source node while dragging ***********************************************/
span
.fancytree-drag-source
{
/* border: 1px dotted gray; */
background-color
:
#e0e0e0
;
}
span
.fancytree-drag-source
a
{
color
:
gray
;
}
/*** Target node while dragging cursor is over it *****************************/
span
.fancytree-drop-target
{
/*border: 1px solid gray;*/
}
span
.fancytree-drop-target
a
{
}
span
.fancytree-drop-target.fancytree-drop-accept
a
{
/*border: 1px solid green;*/
background-color
:
#3169C6
!important
;
color
:
white
!important
;
/* @ IE6 */
text-decoration
:
none
;
}
span
.fancytree-drop-target.fancytree-drop-reject
{
/*border: 1px solid red;*/
}
span
.fancytree-drop-target.fancytree-drop-after
a
{
}
slapos/runner/static/js/scripts/softwareFolder.js
View file @
56cb1129
...
...
@@ -11,7 +11,6 @@ $(document).ready(function () {
CurrentMode
,
script
=
"
/readFolder
"
,
softwareDisplay
=
true
,
fileTree
,
Mode
,
modes
,
projectDir
=
$
(
"
input#project
"
).
val
(),
...
...
@@ -86,7 +85,7 @@ $(document).ready(function () {
function
selectFile
(
file
)
{
$
(
"
#info
"
).
empty
();
$
(
"
#info
"
).
append
(
"
Selection
:
"
+
file
);
$
(
"
#info
"
).
append
(
"
Current work tree
:
"
+
file
);
selection
=
file
;
return
;
}
...
...
@@ -117,7 +116,7 @@ $(document).ready(function () {
$
(
'
#fileTreeFull
'
).
hide
();
}
$
(
"
#info
"
).
empty
();
$
(
"
#info
"
).
append
(
"
Selection
:
"
+
base_path
());
$
(
"
#info
"
).
append
(
"
Current work tree
:
"
+
base_path
());
selection
=
""
;
}
...
...
@@ -296,7 +295,7 @@ $(document).ready(function () {
success
:
function
(
data
)
{
$
(
"
#inline_content
"
).
empty
();
$
(
"
#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>
'
);
viewer
=
ace
.
edit
(
"
editorViewer
"
);
viewer
.
setTheme
(
"
ace/theme/crimson_editor
"
);
...
...
@@ -390,8 +389,11 @@ $(document).ready(function () {
};
// --- Init fancytree during startup ----------------------------------------
$
(
function
(){
$
(
"
#fileTree
"
).
fancytree
({
function
initTree
(
tree
,
path
,
key
){
if
(
!
key
){
key
=
'
0
'
;
}
$
(
tree
).
fancytree
({
activate
:
function
(
event
,
data
)
{
var
node
=
data
.
node
;
},
...
...
@@ -404,14 +406,14 @@ $(document).ready(function () {
},
source
:
{
url
:
$SCRIPT_ROOT
+
"
/fileBrowser
"
,
data
:{
opt
:
20
,
dir
:
currentProject
,
key
:
0
},
data
:{
opt
:
20
,
dir
:
path
,
key
:
key
,
listfiles
:
'
yes
'
},
cache
:
false
},
lazyload
:
function
(
event
,
data
)
{
var
node
=
data
.
node
;
data
.
result
=
{
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
)
{
...
...
@@ -461,7 +463,7 @@ $(document).ready(function () {
bindContextMenu
(
data
.
node
.
span
,
!
data
.
node
.
isFolder
());
}
});
}
);
}
editor
.
setTheme
(
"
ace/theme/crimson_editor
"
);
...
...
@@ -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) {
selectFile(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();*/
editor
.
on
(
"
change
"
,
function
(
e
)
{
...
...
@@ -549,7 +553,7 @@ $(document).ready(function () {
$
(
"
#clearselect
"
).
click
(
function
()
{
edit
=
false
;
$
(
"
#info
"
).
empty
();
$
(
"
#info
"
).
append
(
"
Selection
:
"
+
base_path
());
$
(
"
#info
"
).
append
(
"
Current work tree
:
"
+
base_path
());
$
(
"
input#subfolder
"
).
val
(
""
);
$
(
"
#edit_info
"
).
empty
();
$
(
"
#edit_info
"
).
append
(
"
No file in editor
"
);
...
...
slapos/runner/templates/softwareFolder.html
View file @
56cb1129
...
...
@@ -48,7 +48,7 @@
</div>
<div
id=
"details_box"
>
<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
id=
"code"
>
...
...
slapos/runner/views.py
View file @
56cb1129
...
...
@@ -587,60 +587,61 @@ def fileBrowser():
else
:
opt
=
int
(
request
.
args
.
get
(
'opt'
))
# try:
if
opt
==
1
:
#list files and directories
result
=
file_request
.
listDirs
(
dir
)
elif
opt
==
2
:
#Create file
result
=
file_request
.
makeFile
(
dir
,
filename
)
elif
opt
==
3
:
#Create directory
result
=
file_request
.
makeDirectory
(
dir
,
filename
)
elif
opt
==
4
:
#Delete a list of files or/and directories
result
=
file_request
.
deleteItem
(
dir
,
files
)
elif
opt
==
5
:
#copy a lis of files or/and directories
result
=
file_request
.
copyItem
(
dir
,
files
)
elif
opt
==
6
:
#rename file or directory
result
=
file_request
.
rename
(
dir
,
filename
,
newfilename
)
elif
opt
==
7
:
result
=
file_request
.
copyItem
(
dir
,
files
,
del_source
=
True
)
elif
opt
==
8
:
#donwload file
filename
=
request
.
args
.
get
(
'filename'
).
encode
(
'utf-8'
)
result
=
file_request
.
downloadFile
(
request
.
args
.
get
(
'dir'
).
encode
(
'utf-8'
),
filename
)
try
:
return
send_file
(
result
,
attachment_filename
=
filename
,
as_attachment
=
True
)
except
:
abort
(
404
)
elif
opt
==
9
:
result
=
file_request
.
readFile
(
dir
,
filename
,
False
)
elif
opt
==
11
:
#Upload file
result
=
file_request
.
uploadFile
(
dir
,
request
.
files
)
elif
opt
==
14
:
#Copy file or directory as ...
result
=
file_request
.
copyAsFile
(
dir
,
filename
,
newfilename
)
elif
opt
==
16
:
#zip file
result
=
file_request
.
zipFile
(
dir
,
filename
,
newfilename
)
elif
opt
==
17
:
#zip file
result
=
file_request
.
unzipFile
(
dir
,
filename
,
newfilename
)
elif
opt
==
20
:
#Fancy Load folder
key
=
int
(
request
.
args
.
get
(
'key'
))
dir
=
request
.
args
.
get
(
'dir'
).
encode
(
'utf-8'
)
data
=
file_request
.
fancylistDirs
(
dir
,
key
)
result
=
json
.
dumps
(
data
)
else
:
result
=
"ARGS PARSE ERROR: Bad option..."
# except Exception as e:
# return str(e)
try
:
if
opt
==
1
:
#list files and directories
result
=
file_request
.
listDirs
(
dir
)
elif
opt
==
2
:
#Create file
result
=
file_request
.
makeFile
(
dir
,
filename
)
elif
opt
==
3
:
#Create directory
result
=
file_request
.
makeDirectory
(
dir
,
filename
)
elif
opt
==
4
:
#Delete a list of files or/and directories
result
=
file_request
.
deleteItem
(
dir
,
files
)
elif
opt
==
5
:
#copy a lis of files or/and directories
result
=
file_request
.
copyItem
(
dir
,
files
)
elif
opt
==
6
:
#rename file or directory
result
=
file_request
.
rename
(
dir
,
filename
,
newfilename
)
elif
opt
==
7
:
result
=
file_request
.
copyItem
(
dir
,
files
,
del_source
=
True
)
elif
opt
==
8
:
#donwload file
filename
=
request
.
args
.
get
(
'filename'
).
encode
(
'utf-8'
)
result
=
file_request
.
downloadFile
(
request
.
args
.
get
(
'dir'
).
encode
(
'utf-8'
),
filename
)
try
:
return
send_file
(
result
,
attachment_filename
=
filename
,
as_attachment
=
True
)
except
:
abort
(
404
)
elif
opt
==
9
:
result
=
file_request
.
readFile
(
dir
,
filename
,
False
)
elif
opt
==
11
:
#Upload file
result
=
file_request
.
uploadFile
(
dir
,
request
.
files
)
elif
opt
==
14
:
#Copy file or directory as ...
result
=
file_request
.
copyAsFile
(
dir
,
filename
,
newfilename
)
elif
opt
==
16
:
#zip file
result
=
file_request
.
zipFile
(
dir
,
filename
,
newfilename
)
elif
opt
==
17
:
#zip file
result
=
file_request
.
unzipFile
(
dir
,
filename
,
newfilename
)
elif
opt
==
20
:
#Fancy Load folder
key
=
request
.
args
.
get
(
'key'
)
dir
=
request
.
args
.
get
(
'dir'
).
encode
(
'utf-8'
)
listfiles
=
request
.
args
.
get
(
'listfiles'
,
''
)
data
=
file_request
.
fancylistDirs
(
dir
,
key
,
listfiles
)
result
=
json
.
dumps
(
data
)
else
:
result
=
"ARGS PARSE ERROR: Bad option..."
except
Exception
as
e
:
return
str
(
e
)
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