Skip to content

Commit 42bddcb

Browse files
committed
create models from adminifier. closes #109
1 parent 3ef746b commit 42bddcb

File tree

4 files changed

+44
-4
lines changed

4 files changed

+44
-4
lines changed

adminifier/wiki.go

+15-2
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ var wikiFuncHandlers = map[string]func(*wikiRequest){
4242
"image/": handleImage,
4343
"page-revisions": handlePageRevisions,
4444
"create-page": handleCreatePage,
45+
"create-model": handleCreateModel,
4546
}
4647

4748
// wikiTemplate members are available to all wiki templates
@@ -684,19 +685,31 @@ func handlePageRevisions(wr *wikiRequest) {
684685
}
685686

686687
func handleCreatePage(wr *wikiRequest) {
688+
handleCreate("page", wr, func(dir, title string) (string, error) {
689+
return wr.wi.CreatePage(dir, title, nil, getCommitOpts(wr, "Create page: "+title))
690+
})
691+
}
692+
693+
func handleCreateModel(wr *wikiRequest) {
694+
handleCreate("model", wr, func(dir, title string) (string, error) {
695+
return wr.wi.CreateModel(title, nil, getCommitOpts(wr, "Create model: "+title))
696+
})
697+
}
698+
699+
func handleCreate(typ string, wr *wikiRequest, createFunc func(dir, title string) (string, error)) {
687700
if !parsePost(wr.w, wr.r, "title") {
688701
return
689702
}
690703

691704
title, dir := wr.r.Form.Get("title"), wr.r.Form.Get("dir")
692705
var filename string
693-
filename, wr.err = wr.wi.CreatePage(dir, title, nil, getCommitOpts(wr, "Create page: "+title))
706+
filename, wr.err = createFunc(dir, title)
694707
if wr.err != nil {
695708
return
696709
}
697710

698711
// redirect to edit page
699-
http.Redirect(wr.w, wr.r, wr.wikiRoot+"edit-page?page="+path.Join(dir, filename), http.StatusTemporaryRedirect)
712+
http.Redirect(wr.w, wr.r, wr.wikiRoot+"edit-"+typ+"?page="+path.Join(dir, filename), http.StatusTemporaryRedirect)
700713
}
701714

702715
// possibly switch wiki branches

resources/adminifier/static/script/file-list/models.js

+13
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,17 @@ a.json.results.each(function (modelData) {
2525

2626
modelList.draw($('content'));
2727

28+
exports.createModel = function () {
29+
var modal = new ModalWindow({
30+
icon: 'plus-circle',
31+
title: 'New Model',
32+
html: tmpl('tmpl-create-model', {}),
33+
padded: true,
34+
id: 'create-model-window',
35+
autoDestroy: true,
36+
onDone: null
37+
});
38+
modal.show();
39+
}
40+
2841
})(adminifier, window);

resources/adminifier/template/frame-models.tpl

+10-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
data-sort="{{.Order}}"
1313

1414
data-buttons="create filter"
15-
data-button-create="{'title': 'New Model', 'icon': 'plus-circle', 'href': '{{.Root}}/create-model'}"
15+
data-button-create="{'title': 'New Model', 'icon': 'plus-circle', 'func': 'createModel'}"
1616
data-button-filter="{'title': 'Filter', 'icon': 'filter', 'func': 'displayFilter'}"
1717

1818
data-selection-buttons="move rename delete"
@@ -21,4 +21,12 @@
2121
data-button-delete="{'title': 'Delete', 'icon': 'trash', 'func': 'deleteSelected', 'hide': true}"
2222
/>
2323

24-
{{ template "common-file-list.tpl" . }}
24+
{{ template "common-file-list.tpl" . }}
25+
26+
<template id="tmpl-create-model">
27+
<form action="func/create-model" method="post">
28+
<label for="name">Model Name:</label>
29+
<input type="text" name="title" />
30+
<input type="submit" value="Create" />
31+
</form>
32+
</template>

wiki/revision.go

+6
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,12 @@ func (w *Wiki) CreatePage(where string, title string, content []byte, commit Com
497497
return name, w.WritePage(where+name, content, true, commit)
498498
}
499499

500+
// CreateModel creates a new model file.
501+
func (w *Wiki) CreateModel(title string, content []byte, commit CommitOpts) (string, error) {
502+
name := wikifier.ModelName(title)
503+
return name, w.WriteModel(name, content, true, commit)
504+
}
505+
500506
// RevisionInfo contains information about a specific revision.
501507
type RevisionInfo struct {
502508
Id string `json:"id"`

0 commit comments

Comments
 (0)