package modules

import (
	"os"
	"strings"

	"golang-fave/engine/utils"
	"golang-fave/engine/wrapper"
)

func (this *Modules) RegisterAction_FilesMkdir() *Action {
	return this.newAction(AInfo{
		Mount:     "files-mkdir",
		WantAdmin: true,
	}, func(wrap *wrapper.Wrapper) {
		pf_path := utils.Trim(wrap.R.FormValue("path"))
		pf_name := utils.Trim(wrap.R.FormValue("name"))

		if pf_path == "" {
			wrap.MsgError(`Please specify folder path`)
			return
		}

		if pf_name == "" {
			wrap.MsgError(`Please specify folder name`)
			return
		}

		dirname := utils.SafeFilePath(pf_path + pf_name)
		target := strings.Join([]string{wrap.DHtdocs, "public"}, string(os.PathSeparator)) + dirname
		if err := os.Mkdir(target, 0755); err != nil {
			emsg := err.Error()
			i := strings.Index(emsg, ":")
			if i != -1 {
				emsg = emsg[i+1:]
			}
			wrap.MsgError(emsg)
			return
		}

		path := "/"
		i := strings.LastIndex(dirname, string(os.PathSeparator))
		if i != -1 {
			path = dirname[:i+1]
		}

		// Set path
		wrap.Write(`$('#sys-modal-files-manager .dialog-path span').html('` + path + `');`)

		// Refresh table
		wrap.Write(`fave.FilesManagerLoadData('` + path + `');`)
	})
}