Welcome! Fuhv2.0 template for HFS 2.4 [+special:strings] option.newfolder=1 option.move=1 option.comment=0 option.rename=1 COMMENT with the ones above you can disable some features of the template. They apply to all users. [template id] def 2.0 [api level] 2 [common-head] [] {.$common-head.} {.!Home.} %folder%

WARNING: this template is only to be used with HFS 2.4 (and macros enabled)

{.$menu panel.} {.$folder panel.} {.$list panel.}

  {.!Expand preview frame.} 
[X]  
{.!You can tap on filename and preview here.}
[list panel] {.if not| %number% |{:
{.!{.if|{.length|{.?search.}.}|No results|No files.}.}
:}|{:
%list%
:}.} [menu panel] [title-bar] {.!title.} [folder panel]
{.breadcrumbs|{::} .}
{.if|%number%|
%number-folders% {.!folders.}, %number-files% {.!files.}, {.add bytes|%total-size%.}
.} {.123 if 2|
|{.commentNL|%folder-item-comment%.}|
.} [upload panel] [search panel]
{.!Search.}
{.!this folder and sub-folders.}
{.!this folder only.}
{.!entire server.}
[+special:strings] title=HTTP File Server 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? [file=folder=link|private]
[+file=folder] [+file=folder=link]
[error-page] {.$common-head.} %content%
HFS - %timestamp%
[login]

{.!Login required.}

[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.}) [unauth]

{.!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-results] [{.cut|1|-1|%uploaded-files%.} ] [upload-success] { "url":"%item-url%", "name":"%item-name%", "size":"%item-size%", "speed":"%smart-speed%" }, {.if| {.length|%user%.} |{: {.set item|%folder%%item-name%|comment={.!uploaded by.} %user%.} :}.} [upload-failed] { "err":"{.!%reason%.}", "name":"%item-name%" }, [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|public|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|%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|public|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|%folder%{.postvar|from.}.} {.set|yn|{.postvar|to.}.} {.set|y|%folder%{.^yn.}.} {.break|if={.not|{.exists|{.^x.}.}.}|result=not found.} {.break|if={.exists|{.^y.}.}|result=exists.} {.set|comment| {.get item|{.^x.}|comment.} .} {.set item|{.^x.}|comment=.} {.break|if={.not|{.length|{.rename|{.^x.}|{.^yn.}.}.}.}|result=failed.} {.set item|{.^x.}|resource={.filepath|{.get item|{.^x.}|resource.}.}{.^yn.}.} {.set item|{.^x.}|name={.^yn.}.} {.set item|{.^y.}|comment={.^comment.}.} {.add to log|{.if|%user%|{.!User.} %user%|{.!Anonymous.}.} {.!renamed.} "{.^x.}" {.!to.} "{.^yn.}".} {.pipe|ok.} [ajax.move|public|no log] {.check session.} {.set|dst|{.postvar|dst.}.} {.break|if={.not|{.and|{.can move.}|{.get|can upload|path={.^dst.}.}/and.}.} |result=forbidden.} {.set|log|{.!Moving items to.} {.^dst.}.} {.for each|fn|{.replace|:|{.no pipe||.}|{.postvar|files.}.}|{: {.break|if={.is file protected|var=fn.}|result=forbidden.} {.set|x|%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.} {.^fn.}: {.!not moved.} :}/if.} :}/if.} :}.} ; :}.} {.add to log|{.^log.}.} [ajax.comment|public|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|%folder%{.^fn.}|comment={.postvar|text.}.} :}.} {.pipe|ok.} [ajax.changepwd|public|no log] {.check session.} {.break|if={.not|{.can change pwd.}.} |result=forbidden.} {.if|{.length|{.set account||password={.postvar|new.}.}/length.}|ok|failed.} [special:alias] check session=break|if={.{.cookie|HFS_SID_.} != {.postvar|token.}.}|result=bad token 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 delete=get|can delete can change pwd={.{.member of|can change password.} >.} can move=and|{.get|can delete.}|{.!option.move.} 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|$1B [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|public|no log|cache] // [preview.js|no log|public] {.add header|Cache-Control: public, max-age=86400.} //