diff --git a/domain/section/frame/frame.go b/domain/section/frame/frame.go new file mode 100644 index 00000000..0de3ac30 --- /dev/null +++ b/domain/section/frame/frame.go @@ -0,0 +1,58 @@ +// Copyright 2016 Documize Inc. . 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 . +// +// 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 +} diff --git a/domain/section/register.go b/domain/section/register.go index 20ea3ae6..11d3f52a 100644 --- a/domain/section/register.go +++ b/domain/section/register.go @@ -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))) diff --git a/gui/app/components/section/frame/type-editor.js b/gui/app/components/section/frame/type-editor.js new file mode 100644 index 00000000..00855a12 --- /dev/null +++ b/gui/app/components/section/frame/type-editor.js @@ -0,0 +1,41 @@ +// Copyright 2016 Documize Inc. . 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 . +// +// 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); + } + } +}); diff --git a/gui/app/components/section/frame/type-renderer.js b/gui/app/components/section/frame/type-renderer.js new file mode 100644 index 00000000..7f9e1612 --- /dev/null +++ b/gui/app/components/section/frame/type-renderer.js @@ -0,0 +1,14 @@ +// Copyright 2016 Documize Inc. . 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 . +// +// https://documize.com + +import Component from '@ember/component'; + +export default Component.extend({}); \ No newline at end of file diff --git a/gui/app/styles/core/view/document/wysiwyg.scss b/gui/app/styles/core/view/document/wysiwyg.scss index e3116626..40de8907 100644 --- a/gui/app/styles/core/view/document/wysiwyg.scss +++ b/gui/app/styles/core/view/document/wysiwyg.scss @@ -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; diff --git a/gui/app/templates/components/section/frame/type-editor.hbs b/gui/app/templates/components/section/frame/type-editor.hbs new file mode 100644 index 00000000..b212c825 --- /dev/null +++ b/gui/app/templates/components/section/frame/type-editor.hbs @@ -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")}} +
+ + {{textarea value=data rows="10" id="iframe-embed-code" class="form-control mousetrap" placeholder="Enter code" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"}} + Paste the iframe code snippet +
+{{/section/base-editor}} diff --git a/gui/app/templates/components/section/frame/type-renderer.hbs b/gui/app/templates/components/section/frame/type-renderer.hbs new file mode 100644 index 00000000..24600468 --- /dev/null +++ b/gui/app/templates/components/section/frame/type-renderer.hbs @@ -0,0 +1,3 @@ +
+ {{{page.body}}} +
diff --git a/gui/public/sections/frame.png b/gui/public/sections/frame.png new file mode 100644 index 00000000..46e896cc Binary files /dev/null and b/gui/public/sections/frame.png differ diff --git a/gui/public/sections/frame@2x.png b/gui/public/sections/frame@2x.png new file mode 100644 index 00000000..bcc0a2c6 Binary files /dev/null and b/gui/public/sections/frame@2x.png differ