@@ -26,6 +26,7 @@ var wikiFrameHandlers = map[string]func(*wikiRequest){
2626 "images" : handleImagesFrame ,
2727 "images/" : handleImagesFrame ,
2828 "models" : handleModelsFrame ,
29+ "models/" : handleModelsFrame ,
2930 "settings" : handleSettingsFrame ,
3031 "edit-page" : handleEditPageFrame ,
3132 "edit-category" : handleEditCategoryFrame ,
@@ -36,16 +37,18 @@ var wikiFrameHandlers = map[string]func(*wikiRequest){
3637}
3738
3839var wikiFuncHandlers = map [string ]func (* wikiRequest ){
39- "switch-branch/" : handleSwitchBranch ,
40- "create-branch" : handleCreateBranch ,
41- "write-page" : handleWritePage ,
42- "write-model" : handleWriteModel ,
43- "write-config" : handleWriteWikiConfig ,
44- "image/" : handleImage ,
45- "page-revisions" : handlePageRevisions ,
46- "create-page" : handleCreatePage ,
47- "create-model" : handleCreateModel ,
48- "create-page-folder" : handleCreatePageFolder ,
40+ "switch-branch/" : handleSwitchBranch ,
41+ "create-branch" : handleCreateBranch ,
42+ "write-page" : handleWritePage ,
43+ "write-model" : handleWriteModel ,
44+ "write-config" : handleWriteWikiConfig ,
45+ "image/" : handleImage ,
46+ "page-revisions" : handlePageRevisions ,
47+ "create-page" : handleCreatePage ,
48+ "create-model" : handleCreateModel ,
49+ "create-page-folder" : handleCreatePageFolder ,
50+ "create-model-folder" : handleCreateModelFolder ,
51+ "create-image-folder" : handleCreateImageFolder ,
4952}
5053
5154// wikiTemplate members are available to all wiki templates
@@ -325,8 +328,13 @@ func handleImagesFrame(wr *wikiRequest) {
325328
326329func handleModelsFrame (wr * wikiRequest ) {
327330 descending , sortFunc := getSortFunc (wr , wiki .SortModified , true )
328- models := wr .wi .ModelsSorted (descending , sortFunc , wiki .SortTitle )
329- handleFileFrames (wr , "models" , models )
331+ dir := strings .TrimPrefix (strings .TrimPrefix (wr .r .URL .Path , wr .wikiRoot + "frame/models" ), "/" )
332+ models , dirs := wr .wi .ModelsAndDirsSorted (dir , descending , sortFunc , wiki .SortTitle )
333+ handleFileFrames (wr , "models" , struct {
334+ Models []wikifier.ModelInfo `json:"models"`
335+ Dirs []string `json:"dirs"`
336+ Cd string `json:"cd"`
337+ }{models , dirs , dir })
330338}
331339
332340func handleCategoriesFrame (wr * wikiRequest ) {
@@ -718,6 +726,18 @@ func handleCreatePageFolder(wr *wikiRequest) {
718726 })
719727}
720728
729+ func handleCreateImageFolder (wr * wikiRequest ) {
730+ handleCreateFolder ("image" , wr , func (dir , name string ) (string , error ) {
731+ return wr .wi .CreateImageFolder (dir , name )
732+ })
733+ }
734+
735+ func handleCreateModelFolder (wr * wikiRequest ) {
736+ handleCreateFolder ("model" , wr , func (dir , name string ) (string , error ) {
737+ return wr .wi .CreateModelFolder (dir , name )
738+ })
739+ }
740+
721741func handleCreateFolder (typ string , wr * wikiRequest , createFunc func (dir , name string ) (string , error )) {
722742 if ! parsePost (wr .w , wr .r , "name" ) {
723743 return
0 commit comments