Welcome! This is the default template for HFS 2.3
template revision TR1.
Here below you'll find some options affecting the template.
Consider 1 is used for "yes", and 0 is used for "no".
DO NOT EDIT this template just to change options. It's a very bad way to do it, and you'll pay for it!
Correct way: in Virtual file system, right click on home/root, properties, diff template,
put this text [+special:strings]
and following all the options you want to change, using the same syntax you see here.
[+special:strings]
option.paged=1
COMMENT this option causes your file list to be paged by default
option.newfolder=1
option.move=1
option.comment=1
option.rename=1
COMMENT with these you can disable some features of the template. Please note this is not about user permissions, this is global!
[]
{.!HFS.} %folder%
WARNING: this template is only to be used with HFS 2.3 (and macros enabled)
{.$box panel.}
{.$list.}
[list]
{.comment| this is quite ugly, i know, but if i use any vertical padding with height:100% i'll get a scrollbar .}
{.if not| %number% |{:
{.!No {.if|{.length|{.?search.}.}|results|files.}.}
:}|{:
:}.}
[box panel]
{.$box messages.}
{.$box login.}
{.$box folder.}
{.$box search.}
{.$box selection.}
{.$box upload.}
{.$box actions.}
{.$box server info.}
[box messages]
{.!Messages.}
[box login]
{.!User.}
{.if| {.length|%user%.} |{:
%user%
{.if|{.can change pwd.} |
{.!Change password.}
.}
:}
| Login
.}
[box folder]
{.!Folder.}
{.if| {.length|{.?search.}.} |
{.!Back.}
| {.if| {.%folder% != / .} |
{.!Up.} .}
/if.}
{.comment|we need this to start from 1 {.count|folder levels.}.}
{.breadcrumbs|{:
{.if|{.length|%bread-name%.}|» %bread-name%|
{.!Home.}.}:} .}
%number-folders% {.!folders.}, %number-files% {.!files.}, {.add bytes|%total-size%.}
{.123 if 2| .}
[box search]
{.if| {.get|can recur.} |
{.!Search.}
/if.}
[box selection]
{.!Select.}
{.!All.}
{.!Invert.}
{.!Mask.}
0 items selected
[box upload]
{.if| {.get|can upload.} |{:
{.!Upload.}
:}.}
[box actions]
{.!Actions.}
{.if|{.can mkdir.}|
{.!New folder.}
.}
{.if|{.can comment.}|
.}
{.if|{.get|can delete.}|
{.!Delete.}
{.if|{.and|{.!option.move.}|{.can move.}.}| {.!Move.} .}
.}
{.if|{.can rename.}|
{.!Rename.}
.}
{.if|{.get|can archive.}|
{.!Archive.}
.}
{.!Get list.}
[box server info]
{.!Server information.}
HttpFileServer %version%
{.!Server time.}: %timestamp%
{.!Server uptime.}: %uptime%
[+special:strings]
max s dl msg=There is a limit on the number of simultaneous downloads on this server. This limit has been reached. Retry later.
retry later=Please, retry later.
item folder=in folder
no files=No files in this folder
no results=No items match your search query
confirm=Are you sure?
[style.css|no log]
body { font-family:tahoma, verdana, arial, helvetica, sans; font-weight:normal; font-size:9pt; background-color:#eef; }
html, body { padding:0; border:0; height:100%; }
html, body, p, form { margin:0 }
a { text-decoration:none; color:#47c; border:1px solid transparent; padding:0 0.1em; }
a:visited { color:#55F; }
a:hover { background-color:#fff; border-color:#47c; }
img { border-style:none }
fieldset { margin-bottom:0.7em; text-align:left; padding:0.6em; }
#panel { float:left; margin-top:1em; margin-left:1em; max-width:250px; }
#panel hr { width:80%; margin:1em auto; }
#files_outer { height:100%; overflow:auto; text-align:left; padding:0 1.6em; }
#files { background:#ddf; border:0; }
#files tr { background:#fff; }
#files tr.even { background:#eef; }
#files tr.selected { background:#bcf; }
#files td { padding:0.2em 0.5em; text-align:right; }
#files tr td:first-child { text-align:left; }
#files th { padding:0.5em 1em; background:#47c; text-align:center; }
#files th a { color:white; font-size:130%; }
#files th a:hover { background:transparent; border-color:#fff; color:#fff; font-size:130%; }
#files td:first-child { text-align:left; }
#files td.nosize { text-align:center; font-style:italic; }
#files .selector { display:none; }
#actions button { margin:0.2em; }
#breadcrumbs { margin-top:1em; padding-left:0.5em; }
#breadcrumbs a { padding:0.15em 0; border-width:2px; display:block; }
#folder-stats, #foldercomment { margin-top:1em; padding-top:0.5em; border-top:1px solid #666; }
#folder-stats { color:#666; text-align:center; }
#msgs { display:none; }
#msgs li:first-child { font-weight:bold; }
#pages span { padding-left:0.5em; padding-right:0.5em; cursor:pointer; }
#pages button { font-size:smaller; }
.selectedPage { font-weight:bold; font-size:larger; }
.hidden { display:none; }
[file=folder=link|private]
{.if|{.get|is new.}| NEW .}
{.if not|{.get|can access.}| .}
%item-name%
{.if| {.length|{.?search.}.} |{:{.123 if 2|{.!item folder.} |{.breadcrumbs|{:
%bread-name%/ :}|from={.count substring|/|%folder%.}/breadcrumbs.}|
.}:} .}
{.123 if 2|.}
[+file]
%item-size%B %item-modified%
[+folder]
folder %item-modified%
[+link]
link
[error-page]
%content%
[not found]
{.!Not found.}
{.!go to root.}
[overload]
{.!Server Too Busy.}
{.!The server is too busy to handle your request at this time. Retry later.}
[max contemp downloads]
{.!Download limit.}
{.!max s dl msg.}
({.disconnection reason.})
[unauthorized]
{.!Unauthorized.}
{.!Either your user name and password do not match, or you are not permitted to access this resource..}
[deny]
{.!Forbidden.}
{.or|%reason%|{.!This resource is not accessible..}.}
[ban]
{.!You are banned.}
%reason%
[upload]
[upload-file]
[upload-results]
HFS %folder%
{.!Upload results.}
{.^ok.} {.!files uploaded correctly..}
{.123 if 2| |{.^ko.}| files failed..}
{.!Back.}
{.^back.}
{.!Back.}
[upload-success]
{.inc|ok.}
%item-name%
%item-size% @ %speed% KB/s
{.if| {.length|%user%.} |{: {.append| %folder-resource%\hfs.comments.txt |{.filename|%item-resource%.}=uploaded by %user%
/append.} :}/if.}
[upload-failed]
{.inc|ko.}
%item-name%
{.!%reason%.}
[progress|no log]
[progress-nofiles]
{.!No file exchange in progress..}
[progress-upload-file]
{.if not|{.{.?only.} = down.}|{:
Uploading %total% @ %speed-kb% KB/s
%filename%
{.!Time left.} %time-left%"
%perc%%
:}.}
[progress-download-file]
{.if not|{.{.?only.} = up.}|{:
Downloading %total% @ %speed-kb% KB/s
%filename%
{.!Time left.} %time-left%"
%perc%%
:}.}
[ajax.mkdir|no log]
{.break|if={.not|{.can mkdir.}.}|result=forbidden.}
{.set|x|{.force ansi|%folder%{.postvar|name.}.}.}
{.break|if={.exists|{.^x.}.}|result=exists.}
{.break|if={.not|{.length|{.mkdir|{.^x.}.}.}.}|result=failed.}
{.add to log|User %user% created folder "{.^x.}".}
ok
[ajax.rename|no log]
{.break|if={.not|{.can rename.}.}|result=forbidden.}
{.set|x|{.force ansi|%folder%{.postvar|from.}.}.}
{.set|y|{.force ansi|%folder%{.postvar|to.}.}.}
{.break|if={.not|{.exists|{.^x.}.}.}|result=not found.}
{.break|if={.exists|{.^y.}.}|result=exists.}
{.break|if={.not|{.length|{.rename|{.^x.}|{.^y.}.}.}.}|result=failed.}
{.add to log|User %user% renamed "{.^x.}" to "{.^y.}".}
ok
[ajax.move|no log]
{.set|dst|{.force ansi|{.postvar|dst.}.}.}
{.break|if={.not|{.and|{.can move.}|{.get|can delete.}|{.get|can upload|path={.^dst.}.}/and.}.} |result={.!forbidden.}.}
{.set|log|{.!Moving items to.} {.^dst.}.}
{.for each|fn|{.replace|:|{.no pipe||.}|{.force ansi|{.postvar|files.}.}.}|{:
{.set|x|{.force ansi|%folder%.}{.^fn.}.}
{.set|y|{.^dst.}/{.^fn.}.}
{.if not |{.exists|{.^x.}.}|{.^x.}: {.!not found.}|{:
{.if|{.exists|{.^y.}.}|{.^y.}: {.!already exists.}|{:
{.if|{.length|{.move|{.^x.}|{.^y.}.}.} |{:
{.set|log|{.chr|13.}{.^fn.}|mode=append.}
{.move|{.^x.}.md5|{.^y.}.md5.}
{.move|{.^x.}.comment|{.^y.}.comment.}
:} | {:
{.set|log|{.chr|13.}{.^fn.} (failed)|mode=append.}
{.maybe utf8|{.^fn.}.}: {.!not moved.}
:}/if.}
:}/if.}
:}.}
;
:}.}
{.add to log|{.^log.}.}
[ajax.comment|no log]
{.break|if={.not|{.can comment.}.} |result=forbidden.}
{.for each|fn|{.replace|:|{.no pipe||.}|{.postvar|files.}.}|{:
{.set item|{.force ansi|%folder%{.^fn.}.}|comment={.force ansi|{.postvar|text.}.}.}
:}.}
ok
[ajax.changepwd|no log]
{.break|if={.not|{.can change pwd.}.} |result=forbidden.}
{.if|{.length|{.set account||password={.force ansi|{.postvar|new.}.}.}/length.}|ok|failed.}
[special:alias]
can mkdir=and|{.get|can upload.}|{.!option.newfolder.}
can comment=and|{.get|can upload.}|{.!option.comment.}
can rename=and|{.get|can delete.}|{.!option.rename.}
can change pwd=member of|can change password
can move=or|1
escape attr=replace|"|"|$1
commentNL=if|{.pos| |$1.}
add bytes=switch|{.cut|-1||$1.}|,|0,1,2,3,4,5,6,7,8,9|$1 bytes|K,M,G,T|$1bytes
[special:import]
{.new account|can change password|enabled=1|is group=1|notes=accounts members of this group will be allowed to change their password.}
[lib.js|no log]
//