Welcome! This is the default template for HFS 2.3
template revision TR2.
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
options.loadFromCDN=1
COMMENT with these you can disable some features of the template. Please note this is not about user permissions, this is global!
Welcome! This is the default template for HFS 2.3
template revision TR2.
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
options.loadFromCDN=1
COMMENT with these you can disable some features of the template. Please note this is not about user permissions, this is global!
[]
{.if|%user%|{.$loggedin.}|{.$login-link.}.}
[login-link]
{.!HFS.} %folder%
{.if|{.!option.loadFromCDN.}|
.}
{.$box login.}
THIS IS THE LOGIN PAGE OF THE DEFAULT TPL
[loggedin]
{.!HFS.} %folder%
{.if|{.!option.loadFromCDN.}|
.}
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% %item-dl-count%
[+folder]
folder %item-modified% %item-dl-count%
[+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.}
{.or|{.^ok.}|0.} {.!files uploaded correctly..}
{.123 if 2| |{.^ko.}| files failed..}
{.!Back.}
{.^back.}
{.!Back.}
[upload-success]
{.inc|ok.}
%item-name%
%item-size% @ %smart-speed%B/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]
{.check session.}
{.set|x|{.postvar|name.}.}
{.break|if={.pos|\|var=x.}{.pos|/|var=x.}|result=forbidden.}
{.break|if={.not|{.can mkdir.}.}|result=not authorized.}
{.set|x|{.force ansi|%folder%{.^x.}.}.}
{.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]
{.check session.}
{.break|if={.not|{.can rename.}.}|result=forbidden.}
{.break|if={.is file protected|{.postvar|from.}.}|result=forbidden.}
{.break|if={.is file protected|{.postvar|to.}.}|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]
{.check session.}
{.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.}.}.}|{:
{.break|if={.is file protected|var=fn.}|result=forbidden.}
{.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]
{.check session.}
{.break|if={.not|{.can comment.}.} |result=forbidden.}
{.for each|fn|{.replace|:|{.no pipe||.}|{.postvar|files.}.}|{:
{.break|if={.is file protected|var=fn.}|result=forbidden.}
{.set item|{.force ansi|%folder%{.^fn.}.}|comment={.encode html|{.force ansi|{.postvar|text.}.}.}.}
:}.}
ok
[ajax.changepwd|no log]
{.check session.}
{.break|if={.not|{.can change pwd.}.} |result=forbidden.}
{.if|{.length|{.set account||password={.force ansi|{.postvar|new.}.}.}/length.}|ok|failed.}
[special:alias]
check session=break|if={.{.cookie|HFS_SID.} != {.postvar|token.}.}|result=bad session
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]
//