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 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.}.}
:}|{:
{.set|sortlink| {:{.!$2.}{.if| {.{.?sort.} = $1.} | &{.if|{.?rev.}|u|d.}Arr;.}:} .}
{.^sortlink|n|Name.}{.^sortlink|e|.extension.} {.^sortlink|s|Size.} {.^sortlink|t|Timestamp.} {.^sortlink|d|Hits.} %list%
:}.}
[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.} | .} :} | Login .}
[box folder]
{.!Folder.}
{.if| {.length|{.?search.}.} | {.!Back.} | {.if| {.%folder% != / .} | {.!Up.} .} /if.}
%number-folders% {.!folders.}, %number-files% {.!files.}, {.add bytes|%total-size%.}
{.123 if 2|
|{.commentNL|%folder-item-comment%.}|
.}
[box search] {.if| {.get|can recur.} | /if.} [box selection]
{.!Select.}

0 items selected

[box upload] {.if| {.get|can upload.} |{:
{.!Upload.}
:}.} [box actions]
{.!Actions.}
{.if|{.can mkdir.}| .} {.if|{.can comment.}| .} {.if|{.get|can delete.}| {.if|{.and|{.!option.move.}|{.can move.}.}| .} .} {.if|{.can rename.}| .} {.if|{.get|can 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; word-break:break-all; } #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|
|{.commentNL|%item-comment%.}|
.} [+file] %item-size%B%item-modified%%item-dl-count% [+folder] folder%item-modified%%item-dl-count% [+link] link [error-page] %content%
HttpFileServer %version%
%timestamp%
[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.}".} {.pipe|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.}".} {.pipe|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.}|{: {.set|comment| {.get item|{.^x.}|comment.} .} {.set item|{.^x.}|comment=.} {.comment| this must be done before moving, or it will fail.} {.if|{.length|{.move|{.^x.}|{.^y.}.}.} |{: {.move|{.^x.}.md5|{.^y.}.md5.} {.set|log|{.chr|13.}{.^fn.}|mode=append.} {.set item|{.^y.}|comment={.^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.}.}.}.} :}.} {.pipe|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=if|{.{.cookie|HFS_SID_.} != {.postvar|token.}.}|{:{.cookie|HFS_SID_|value=|expires=-1.} {.break|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|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] //