1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-19 05:09:42 +02:00

Provide generic IFrame section for documents

Closes #352
This commit is contained in:
sauls8t 2019-12-09 12:31:44 +00:00
parent accf0a2c63
commit 1a89201bd9
9 changed files with 134 additions and 0 deletions

View file

@ -0,0 +1,58 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
//
// This software (Documize Community Edition) is licensed under
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
//
// You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>.
//
// https://documize.com
package frame
import (
"net/http"
"github.com/documize/community/core/env"
"github.com/documize/community/domain/section/provider"
"github.com/documize/community/domain/store"
)
// Provider represents IFRAME
type Provider struct {
Runtime *env.Runtime
Store *store.Store
}
// Meta describes us
func (*Provider) Meta() provider.TypeMeta {
section := provider.TypeMeta{}
section.ID = "1ef25a5a-7b24-470a-afca-bedd8462b7e2"
section.Title = "IFrame"
section.Description = "Embed an IFRAME code snippet"
section.ContentType = "frame"
section.PageType = "tab"
return section
}
// Command stub.
func (*Provider) Command(ctx *provider.Context, w http.ResponseWriter, r *http.Request) {
provider.WriteEmpty(w)
}
// Render converts as-is.
func (*Provider) Render(ctx *provider.Context, config, data string) string {
return embed(config, data)
}
// Refresh just sends back data as-is.
func (*Provider) Refresh(ctx *provider.Context, config, data string) string {
return embed(config, data)
}
func embed(config, data string) string {
return data
}

View file

@ -18,6 +18,7 @@ import (
"github.com/documize/community/domain/section/airtable"
"github.com/documize/community/domain/section/code"
"github.com/documize/community/domain/section/flowchart"
"github.com/documize/community/domain/section/frame"
"github.com/documize/community/domain/section/gemini"
"github.com/documize/community/domain/section/jira"
"github.com/documize/community/domain/section/markdown"
@ -48,6 +49,7 @@ func Register(rt *env.Runtime, s *store.Store) {
provider.Register("plantuml", &plantuml.Provider{Runtime: rt, Store: s})
provider.Register("flowchart", &flowchart.Provider{Runtime: rt, Store: s})
provider.Register("pdf", &pdfjs.Provider{Runtime: rt, Store: s})
provider.Register("frame", &frame.Provider{Runtime: rt, Store: s})
p := provider.List()
rt.Log.Info(fmt.Sprintf("Extensions: registered %d section types", len(p)))

View file

@ -0,0 +1,41 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
//
// This software (Documize Community Edition) is licensed under
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
//
// You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>.
//
// https://documize.com
import Component from '@ember/component';
export default Component.extend({
data: "",
didReceiveAttrs() {
this.set("data", this.get("meta.rawBody"));
},
actions: {
isDirty() {
return this.get('meta.rawBody') !== this.get('data');
},
onCancel() {
let cb = this.get('onCancel');
cb();
},
onAction(title) {
let page = this.get('page');
let meta = this.get('meta');
page.set('title', title);
meta.set('rawBody', this.get("data"));
let cb = this.get('onAction');
cb(page, meta);
}
}
});

View file

@ -0,0 +1,14 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
//
// This software (Documize Community Edition) is licensed under
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
//
// You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>.
//
// https://documize.com
import Component from '@ember/component';
export default Component.extend({});

View file

@ -3,6 +3,10 @@
line-height: 1.5rem;
color: $color-black-light-1;
iframe {
border: none;
}
table {
border: 1px solid map-get($gray-shades, 300) !important;

View file

@ -0,0 +1,12 @@
{{layout/logo-heading
title="IFrame"
desc="Embed an IFrame"
icon=constants.Icon.Integrations}}
{{#section/base-editor document=document folder=folder page=page isDirty=(action "isDirty") onCancel=(action "onCancel") onAction=(action "onAction")}}
<div class="form-group">
<label for="iframe-embed-code">IFrame embed code</label>
{{textarea value=data rows="10" id="iframe-embed-code" class="form-control mousetrap" placeholder="Enter code" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"}}
<small class="form-text text-muted">Paste the iframe code snippet</small>
</div>
{{/section/base-editor}}

View file

@ -0,0 +1,3 @@
<div class="non-printable">
{{{page.body}}}
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B