{{ modal.body }}
7 |├── .bowerrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .travis.yml ├── README.md ├── bower.json ├── fonticons ├── MaterialIcons-Regular.eot ├── MaterialIcons-Regular.ijmap ├── MaterialIcons-Regular.svg ├── MaterialIcons-Regular.ttf ├── MaterialIcons-Regular.woff ├── MaterialIcons-Regular.woff2 ├── control │ ├── icomoon.eot │ ├── icomoon.svg │ ├── icomoon.ttf │ └── icomoon.woff ├── icomoon.eot ├── icomoon.svg ├── icomoon.ttf ├── icomoon.woff ├── icomoon.woff2 └── selection.json ├── fonts ├── Inter-Medium.otf ├── Inter-Medium.ttf ├── Inter-Medium.woff2 ├── Inter-Regular.otf ├── Inter-Regular.ttf ├── Inter-Regular.woff2 ├── apercu_bold.eot ├── apercu_bold.svg ├── apercu_bold.ttf ├── apercu_bold.woff ├── apercu_regular.eot ├── apercu_regular.svg ├── apercu_regular.ttf └── apercu_regular.woff ├── images ├── favicon-16x16.png └── favicon-32x32.png ├── index.html ├── karma.conf.js ├── package.json ├── pluginTester ├── app.js ├── app │ └── media │ │ ├── fb.png │ │ ├── googleplus.png │ │ └── twitter.png ├── images │ ├── avatar-2.png │ └── avatar.png ├── index.html ├── media │ ├── PoweredByGiphy.png │ ├── avatar.png │ ├── cover.png │ ├── fb.png │ ├── googleplus.png │ ├── ic_bookmark_empty.svg │ ├── logo_apple_b.png │ ├── logo_apple_w.png │ ├── logo_facebook.png │ ├── logo_google.png │ ├── logo_x_b.png │ └── logo_x_w.png ├── pages │ ├── controllers │ │ ├── apiKeysCtrl.js │ │ ├── appDatasourcesAPI.js │ │ ├── expressionsBuilderAPI.js │ │ ├── indexCtrl.js │ │ ├── languageSettingsCtrl.js │ │ ├── loginCtrl.js │ │ ├── pluginLayoutsCtrl.js │ │ ├── settingsCtrl.js │ │ ├── shellAppCtrl.js │ │ └── shellCtrl.js │ ├── services │ │ └── gdprService.js │ └── templates │ │ ├── apiKeys.html │ │ ├── datasources.html │ │ ├── expressionsBuilder.html │ │ ├── languageSettings.html │ │ ├── login.html │ │ ├── modal.html │ │ ├── pluginLayouts.html │ │ ├── settings.html │ │ └── shell.html ├── scripts │ ├── angular │ │ ├── 1.4 │ │ │ ├── angular.js │ │ │ ├── angular.min.js │ │ │ └── ui-bootstrap.min.js │ │ └── angular-color-picker.js │ ├── appContext.js │ ├── appOverrides.js │ ├── framework │ │ ├── app.min.js │ │ └── web.min.js │ ├── lib │ │ ├── ng-file-upload-shim.min.js │ │ ├── ng-file-upload.min.js │ │ ├── photoswipe-ui-default.min.js │ │ ├── photoswipe.js │ │ ├── scrollbooster.min.js │ │ ├── tinymce │ │ │ ├── changelog.txt │ │ │ └── js │ │ │ │ └── tinymce │ │ │ │ ├── icons │ │ │ │ └── default │ │ │ │ │ └── icons.min.js │ │ │ │ ├── jquery.tinymce.min.js │ │ │ │ ├── langs │ │ │ │ └── readme.md │ │ │ │ ├── license.txt │ │ │ │ ├── plugins │ │ │ │ ├── advlist │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── anchor │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── autolink │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── autoresize │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── autosave │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── bbcode │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── charmap │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── code │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── codesample │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── colorpicker │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── contextmenu │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── directionality │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── emoticons │ │ │ │ │ ├── js │ │ │ │ │ │ ├── emojiimages.js │ │ │ │ │ │ ├── emojiimages.min.js │ │ │ │ │ │ ├── emojis.js │ │ │ │ │ │ └── emojis.min.js │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── fullpage │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── fullscreen │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── help │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── hr │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── image │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── imagetools │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── importcss │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── insertdatetime │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── legacyoutput │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── link │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── lists │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── media │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── nonbreaking │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── noneditable │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── pagebreak │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── paste │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── preview │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── print │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── quickbars │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── save │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── searchreplace │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── spellchecker │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── tabfocus │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── table │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── template │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── textcolor │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── textpattern │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── toc │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── visualblocks │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── visualchars │ │ │ │ │ └── plugin.min.js │ │ │ │ └── wordcount │ │ │ │ │ └── plugin.min.js │ │ │ │ ├── skins │ │ │ │ ├── content │ │ │ │ │ ├── dark │ │ │ │ │ │ └── content.min.css │ │ │ │ │ ├── default │ │ │ │ │ │ └── content.min.css │ │ │ │ │ ├── document │ │ │ │ │ │ └── content.min.css │ │ │ │ │ └── writer │ │ │ │ │ │ └── content.min.css │ │ │ │ └── ui │ │ │ │ │ ├── oxide-dark │ │ │ │ │ ├── content.inline.min.css │ │ │ │ │ ├── content.min.css │ │ │ │ │ ├── content.mobile.min.css │ │ │ │ │ ├── fonts │ │ │ │ │ │ └── tinymce-mobile.woff │ │ │ │ │ ├── skin.min.css │ │ │ │ │ ├── skin.mobile.min.css │ │ │ │ │ └── skin.shadowdom.min.css │ │ │ │ │ └── oxide │ │ │ │ │ ├── content.inline.min.css │ │ │ │ │ ├── content.min.css │ │ │ │ │ ├── content.mobile.min.css │ │ │ │ │ ├── fonts │ │ │ │ │ └── tinymce-mobile.woff │ │ │ │ │ ├── skin.min.css │ │ │ │ │ ├── skin.mobile.min.css │ │ │ │ │ └── skin.shadowdom.min.css │ │ │ │ ├── themes │ │ │ │ ├── mobile │ │ │ │ │ └── theme.min.js │ │ │ │ └── silver │ │ │ │ │ └── theme.min.js │ │ │ │ ├── tinymce.d.ts │ │ │ │ └── tinymce.min.js │ │ └── xss.min.js │ ├── overrides.js │ ├── pullDownToRefresh.js │ └── siteConfig.js └── styles │ ├── angular-color-picker.css │ ├── appStyle.css │ ├── defaults.css │ ├── helper.css │ ├── input.css │ ├── loading-bar.css │ ├── material-icons.css │ ├── photoswipe.css │ ├── photoswipe.skin.css │ └── pulldown.css ├── plugins ├── myPlugin │ ├── control │ │ ├── content │ │ │ └── index.html │ │ ├── design │ │ │ └── index.html │ │ └── settings │ │ │ └── index.html │ ├── plugin.json │ ├── resources │ │ ├── README.md │ │ ├── icon.png │ │ └── image.png │ └── widget │ │ ├── .images │ │ ├── .nomedia │ │ └── README.md │ │ └── index.html └── testPlugin │ ├── control │ └── content │ │ └── index.html │ ├── plugin.json │ └── widget │ └── index.html ├── scripts ├── _bundles │ ├── buildfire_lightcarousel.min.js │ ├── buildfire_lightcarousel.min.js.map │ ├── jquery_angular_buildfire_smartcrop.min.js │ └── jquery_angular_buildfire_smartcrop.min.js.map ├── angular │ ├── angular-animate.min.js │ ├── angular-route.min.js │ ├── angular-touch.js │ ├── angular-ui-sortable.js │ ├── angular.min.js │ ├── angulargrid.js │ ├── ng-file-upload-shim.min.js │ ├── ng-file-upload.min.js │ ├── ng-infinite-scroll.custom.js │ ├── ng-infinite-scroll.min.js │ ├── ng-map.min.js │ ├── ngAutocomplete.js │ └── ui-bootstrap.min.js ├── buildfire.js ├── buildfire.min.js ├── buildfire.min.js.map ├── buildfire │ ├── components │ │ ├── actionItems │ │ │ └── sortableList.js │ │ ├── aiStateSeeder │ │ │ └── aiStateSeeder.js │ │ ├── carousel │ │ │ └── carousel.js │ │ ├── carouselLight │ │ │ ├── carouselLight.js │ │ │ ├── carouselLight.min.js │ │ │ ├── carouselLight.min.js.map │ │ │ └── carouselLightEditor.js │ │ ├── contentSlider │ │ │ └── contentSlider.js │ │ ├── control │ │ │ ├── listView │ │ │ │ └── listView.js │ │ │ ├── reactions │ │ │ │ ├── reactionGroupsPicker.js │ │ │ │ └── reactionGroupsPicker.min.js │ │ │ └── tagsInput │ │ │ │ ├── tagsInput.js │ │ │ │ ├── tagsInput.min.js │ │ │ │ └── tagsInput.min.js.map │ │ ├── drawer │ │ │ └── drawer.js │ │ ├── fabSpeedDial │ │ │ └── fabSpeedDial.js │ │ ├── images │ │ │ └── thumbnail.js │ │ ├── listView │ │ │ └── listView.js │ │ ├── listView@2.0 │ │ │ └── listView.js │ │ ├── notifications │ │ │ └── notifications.js │ │ ├── pluginInstance │ │ │ └── sortableList.js │ │ ├── popup │ │ │ └── popup.js │ │ ├── ratingSystem │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── index.min.css │ │ │ └── index.min.js │ │ ├── reactions │ │ │ ├── reactions.js │ │ │ └── reactions.min.js │ │ ├── signatureBox │ │ │ ├── signatureBox.js │ │ │ └── signature_pad.min.js │ │ ├── skeleton │ │ │ └── skeleton.js │ │ ├── swipeableDrawer │ │ │ └── swipeableDrawer.js │ │ ├── toast │ │ │ └── toast.js │ │ └── web-components │ │ │ ├── .DS_Store │ │ │ ├── buildfire-components.js │ │ │ ├── buildfire-components │ │ │ ├── buildfire-components.73mqvcjd.js │ │ │ ├── buildfire-components.gxl1fals.js │ │ │ ├── dbckgtkz.entry.js │ │ │ ├── dbckgtkz.es5.entry.js │ │ │ ├── dbckgtkz.sc.entry.js │ │ │ └── dbckgtkz.sc.es5.entry.js │ │ │ ├── collection │ │ │ ├── collection-manifest.json │ │ │ ├── components │ │ │ │ ├── bf-grid │ │ │ │ │ ├── bf-grid.css │ │ │ │ │ └── bf-grid.js │ │ │ │ ├── bf-image-grid │ │ │ │ │ ├── bf-image-grid.css │ │ │ │ │ └── bf-image-grid.js │ │ │ │ ├── bf-image-list │ │ │ │ │ ├── bf-image-list.css │ │ │ │ │ └── bf-image-list.js │ │ │ │ └── bf-img │ │ │ │ │ ├── bf-img.css │ │ │ │ │ └── bf-img.js │ │ │ └── interface.js │ │ │ ├── esm │ │ │ ├── es2017 │ │ │ │ ├── build │ │ │ │ │ ├── dbckgtkz.entry.js │ │ │ │ │ └── dbckgtkz.sc.entry.js │ │ │ │ ├── buildfire-components.components.js │ │ │ │ ├── buildfire-components.core.js │ │ │ │ ├── buildfire-components.define.js │ │ │ │ └── index.js │ │ │ ├── es5 │ │ │ │ ├── build │ │ │ │ │ ├── dbckgtkz.entry.js │ │ │ │ │ └── dbckgtkz.sc.entry.js │ │ │ │ ├── buildfire-components.components.js │ │ │ │ ├── buildfire-components.core.js │ │ │ │ ├── buildfire-components.define.js │ │ │ │ ├── index.js │ │ │ │ └── polyfills │ │ │ │ │ ├── array.js │ │ │ │ │ ├── dom.js │ │ │ │ │ ├── fetch.js │ │ │ │ │ ├── object.js │ │ │ │ │ ├── promise.js │ │ │ │ │ ├── string.js │ │ │ │ │ ├── tslib.js │ │ │ │ │ └── url.js │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── loader │ │ │ ├── index.d.ts │ │ │ ├── index.es2017.js │ │ │ ├── index.js │ │ │ └── package.json │ │ │ └── types │ │ │ ├── components.d.ts │ │ │ ├── components │ │ │ ├── bf-grid │ │ │ │ └── bf-grid.d.ts │ │ │ ├── bf-image-grid │ │ │ │ └── bf-image-grid.d.ts │ │ │ ├── bf-image-list │ │ │ │ └── bf-image-list.d.ts │ │ │ └── bf-img │ │ │ │ └── bf-img.d.ts │ │ │ └── stencil.core.d.ts │ └── services │ │ ├── ai │ │ └── ai.js │ │ ├── bluetooth │ │ ├── ble.js │ │ ├── bleCentral.js │ │ └── iBeacon.js │ │ ├── cachedNotes │ │ └── cachedNotes.js │ │ ├── camera │ │ ├── barcodeScanner.js │ │ └── camera.js │ │ ├── commerce │ │ └── inAppPurchase.js │ │ ├── credits │ │ └── credits.js │ │ ├── fileSystem │ │ └── fileManager.js │ │ ├── firebase │ │ └── firebase.js │ │ ├── format │ │ └── format.js │ │ ├── gamify │ │ ├── scoreboard.js │ │ ├── scoreboard.min.js │ │ └── scoreboard.min.js.map │ │ ├── health │ │ └── healthAPI.js │ │ ├── media │ │ └── audioPlayer.js │ │ ├── notifications │ │ ├── localNotifications.js │ │ └── pushNotifications.js │ │ ├── publicFiles │ │ └── publicFiles.js │ │ ├── reportAbuse │ │ └── reportAbuse.js │ │ ├── searchEngine │ │ └── searchEngine.js │ │ ├── social │ │ └── reactions.js │ │ └── stripe │ │ └── stripe.js ├── dynamic │ ├── dynamicEngine.js │ ├── dynamicEngine.min.js │ └── dynamicEngine.min.js.map ├── fastclick.js ├── firebase │ ├── firebase@7 │ │ ├── firebase-app.js │ │ ├── firebase-auth.js │ │ └── firebase-firestore.js │ └── firebase@9 │ │ ├── firebase-app.js │ │ ├── firebase-auth.js │ │ └── firebase-firestore.js ├── jquery │ ├── bootstrap.min.js │ ├── jquery-1.11.2.min.js │ └── jquery-ui.min.js ├── lory │ └── lory.min.js ├── materialDesign │ └── material-components-web@4.0.0.min.js ├── owlCarousel │ ├── owlCarousel.css │ └── owlCarousel.js ├── readme.txt ├── smartcrop.js ├── sortable.min.js ├── tagify │ ├── tagify.min.js │ └── tagify.polyfills.min.js └── tinymce │ ├── LICENSE.TXT │ ├── bf_tinymce.css │ ├── bf_tinymce_plugins.css │ ├── icons │ └── default │ │ └── icons.min.js │ ├── jquery.tinymce.min.js │ ├── langs │ └── README.md │ ├── license.txt │ ├── plugins │ ├── advlist │ │ └── plugin.min.js │ ├── anchor │ │ └── plugin.min.js │ ├── autolink │ │ └── plugin.min.js │ ├── autoresize │ │ └── plugin.min.js │ ├── autosave │ │ └── plugin.min.js │ ├── bbcode │ │ └── plugin.min.js │ ├── bf_actionitem │ │ └── plugin.min.js │ ├── bf_ai │ │ └── plugin.min.js │ ├── bf_buttons │ │ ├── dialog.html │ │ ├── plugin.js │ │ ├── plugin.min.js │ │ ├── script.js │ │ └── style.css │ ├── bf_imagelib │ │ ├── dialog.html │ │ ├── plugin.min.js │ │ ├── script.js │ │ └── style.css │ ├── bf_layouts │ │ ├── dialog.html │ │ ├── layouts.json │ │ ├── layouts │ │ │ ├── bf_mce_layout1.css │ │ │ ├── bf_mce_layout10.css │ │ │ ├── bf_mce_layout11.css │ │ │ ├── bf_mce_layout12.css │ │ │ ├── bf_mce_layout2.css │ │ │ ├── bf_mce_layout3.css │ │ │ ├── bf_mce_layout4.css │ │ │ ├── bf_mce_layout5.css │ │ │ ├── bf_mce_layout6.css │ │ │ ├── bf_mce_layout7.css │ │ │ ├── bf_mce_layout8.css │ │ │ ├── bf_mce_layout9.css │ │ │ ├── previews │ │ │ │ ├── lyt_1.jpg │ │ │ │ ├── lyt_10.png │ │ │ │ ├── lyt_11.png │ │ │ │ ├── lyt_12.png │ │ │ │ ├── lyt_2.jpg │ │ │ │ ├── lyt_3.jpg │ │ │ │ ├── lyt_4.jpg │ │ │ │ ├── lyt_5.jpg │ │ │ │ ├── lyt_6.jpg │ │ │ │ ├── lyt_7.jpg │ │ │ │ ├── lyt_8.jpg │ │ │ │ └── lyt_9.jpg │ │ │ ├── resources │ │ │ │ ├── img1.jpeg │ │ │ │ ├── img2.jpeg │ │ │ │ └── img3.jpeg │ │ │ ├── template_a.html │ │ │ ├── template_b.html │ │ │ ├── template_c.html │ │ │ ├── template_d.html │ │ │ ├── template_e.html │ │ │ ├── template_f.html │ │ │ └── template_g.html │ │ ├── plugin.js │ │ ├── plugin.min.js │ │ ├── script.js │ │ └── style.css │ ├── bf_rating │ │ ├── dialog.html │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── charmap │ │ └── plugin.min.js │ ├── code │ │ └── plugin.min.js │ ├── codesample │ │ └── plugin.min.js │ ├── colorpicker │ │ └── plugin.min.js │ ├── contextmenu │ │ └── plugin.min.js │ ├── directionality │ │ └── plugin.min.js │ ├── emoticons │ │ ├── js │ │ │ ├── emojiimages.js │ │ │ ├── emojiimages.min.js │ │ │ ├── emojis.js │ │ │ └── emojis.min.js │ │ └── plugin.min.js │ ├── fullpage │ │ └── plugin.min.js │ ├── fullscreen │ │ └── plugin.min.js │ ├── help │ │ └── plugin.min.js │ ├── hr │ │ └── plugin.min.js │ ├── image │ │ └── plugin.min.js │ ├── imagetools │ │ └── plugin.min.js │ ├── importcss │ │ └── plugin.min.js │ ├── insertdatetime │ │ └── plugin.min.js │ ├── legacyoutput │ │ └── plugin.min.js │ ├── link │ │ └── plugin.min.js │ ├── lists │ │ └── plugin.min.js │ ├── media │ │ └── plugin.min.js │ ├── nonbreaking │ │ └── plugin.min.js │ ├── noneditable │ │ └── plugin.min.js │ ├── pagebreak │ │ └── plugin.min.js │ ├── paste │ │ └── plugin.min.js │ ├── preview │ │ └── plugin.min.js │ ├── print │ │ └── plugin.min.js │ ├── quickbars │ │ └── plugin.min.js │ ├── save │ │ └── plugin.min.js │ ├── searchreplace │ │ └── plugin.min.js │ ├── spellchecker │ │ └── plugin.min.js │ ├── tabfocus │ │ └── plugin.min.js │ ├── table │ │ └── plugin.min.js │ ├── template │ │ └── plugin.min.js │ ├── textcolor │ │ └── plugin.min.js │ ├── textpattern │ │ └── plugin.min.js │ ├── toc │ │ └── plugin.min.js │ ├── visualblocks │ │ └── plugin.min.js │ ├── visualchars │ │ └── plugin.min.js │ └── wordcount │ │ └── plugin.min.js │ ├── skins │ ├── content │ │ └── default │ │ │ └── content.min.css │ └── ui │ │ └── bf-skin │ │ ├── content.inline.min.css │ │ ├── content.min.css │ │ ├── content.mobile.min.css │ │ ├── fonts │ │ └── tinymce-mobile.woff │ │ ├── skin.min.css │ │ ├── skin.mobile.min.css │ │ └── skin.shadowdom.min.css │ ├── themes │ └── silver │ │ └── theme.min.js │ ├── tinymce.d.ts │ ├── tinymce.min.js │ └── ui-tinymce.js ├── server.js ├── styles ├── appStyle.css ├── auth.css ├── bfUIElements.css ├── bootstrap.css ├── components │ ├── contentSlider │ │ └── contentSlider.css │ ├── control │ │ ├── listView │ │ │ └── listView.css │ │ └── tagsInput │ │ │ ├── tagsInput.css │ │ │ └── tagsInput.min.css │ ├── fabSpeedDial │ │ └── fabSpeedDial.css │ ├── listView.css │ ├── listView@2.0 │ │ └── listView.css │ ├── reactions │ │ ├── reactions.css │ │ └── reactions.min.css │ ├── skeleton.css │ └── swipeableDrawer │ │ └── swipeableDrawer.css ├── control │ ├── bf-base.css │ └── siteIcons-control.css ├── helper.css ├── icons │ ├── bootstrap@5.0 │ │ ├── bf-bootstrap-icons.css │ │ ├── bootstrap-icons.css │ │ ├── bootstrap-icons.min.css │ │ └── fonts │ │ │ ├── bootstrap-icons.woff │ │ │ └── bootstrap-icons.woff2 │ └── glyph@3.0 │ │ ├── bf-glyph-icons.css │ │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ │ └── glyph-icons.css ├── loading.css ├── material-icons.css ├── materialDesign │ └── material-components-web@4.0.0.min.css ├── media │ ├── avatar-placeholder.png │ ├── empty.svg │ ├── holder-16x9.gif │ ├── holder-16x9.png │ ├── holder-1x1.gif │ ├── holder-1x1.png │ ├── holder-239x1.gif │ ├── holder-239x1.png │ ├── holder-2x1.gif │ ├── holder-2x1.png │ ├── holder-4x1.gif │ ├── holder-4x1.png │ ├── holder-4x3.gif │ ├── holder-4x3.png │ └── reactions │ │ ├── confused_selected.png │ │ ├── confused_unselected.png │ │ ├── crying_selected.png │ │ ├── crying_unselected.png │ │ ├── eco_selected.png │ │ ├── eco_unselected.png │ │ ├── fire_selected.png │ │ ├── fire_unselected.png │ │ ├── happy_selected.png │ │ ├── happy_unselected.png │ │ ├── heart_selected.png │ │ ├── heart_unselected.png │ │ ├── in-love_selected.png │ │ ├── in-love_unselected.png │ │ ├── laughing_selected.png │ │ ├── laughing_unselected.png │ │ ├── like_selected.png │ │ ├── like_unselected.png │ │ ├── relax_selected.png │ │ └── relax_unselected.png ├── pluginScreen.css ├── reactions.css ├── siteIcons.css ├── siteStyle.css └── transitionAnimation.css ├── test.html └── test ├── actionItems.spec.js ├── analytics.spec.js ├── appearance.spec.js ├── auth.spec.js ├── datastore.spec.js ├── deeplink.spec.js ├── device.spec.js ├── fnTests.js ├── ftest ├── actionItems.spec.js ├── datastore.spec.js ├── deeplink.spec.js ├── device.spec.js ├── geo.spec.js ├── history.spec.js ├── imageLib.spec.js ├── messaging.spec.js ├── navigation.spec.js └── pluginInstance.spec.js ├── geo.spec.js ├── history.spec.js ├── imageLib.spec.js ├── messaging.spec.js ├── navigation.spec.js ├── notifications.spec.js ├── parentPost.js ├── pluginInstance.spec.js ├── publicData.spec.js ├── server.js └── spec.js /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "test/ftest/assets/bower_components" 3 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = tab 8 | indent_size = 4 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | max_line_length = 100 13 | 14 | [*.md] 15 | max_line_length = 0 16 | trim_trailing_whitespace = false 17 | insert_final_newline = false 18 | 19 | [COMMIT_EDITMSG] 20 | max_line_length = 0 21 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | /scripts/*.min.js 4 | /scripts/**/*.min.js 5 | /scripts/**/*.min.js.map 6 | /scripts/*.min.js.map 7 | 8 | /scripts/angular 9 | /scripts/owlCarousel 10 | /scripts/tinymce 11 | /scripts/fastclick.js 12 | /scripts/smartcrop.js 13 | 14 | /pluginTester/scripts/*.min.js 15 | /pluginTester/scripts/**/*.min.js 16 | /pluginTester/scripts/angular 17 | /pluginTester/scripts/lib 18 | 19 | /test/ftest/assets 20 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'env': { 3 | 'browser': true, 4 | 'es2020': true 5 | }, 6 | 'extends': 'eslint:recommended', 7 | 'parserOptions': { 8 | 'ecmaVersion': 2020 9 | }, 10 | 'rules': { 11 | 'indent': [ 12 | 'error', 13 | 'tab' 14 | ], 15 | 'linebreak-style': [ 16 | 'error', 17 | 'unix' 18 | ], 19 | 'quotes': [ 20 | 'error', 21 | 'single' 22 | ], 23 | 'semi': [ 24 | 'error', 25 | 'always' 26 | ] 27 | }, 28 | "globals": { 29 | "buildfire": true, 30 | "dynamicEngine": true, 31 | "tinymce": true, 32 | "FastClick": true 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # node-waf configuration 20 | .lock-wscript 21 | 22 | # Compiled binary addons (http://nodejs.org/api/addons.html) 23 | build/Release 24 | 25 | # Dependency directory 26 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 27 | node_modules 28 | bower_components 29 | .idea 30 | /zip.cmd 31 | /fonticons.zip 32 | /styles.zip 33 | /scripts.zip 34 | plugins 35 | !/plugins/myPlugin/ 36 | !/plugins/testPlugin/ 37 | !/scripts/tinymce/plugins/ 38 | !/plugintester/scripts/lib/tinymce/js/tinymce/plugins/ 39 | package-lock.json 40 | .DS_Store -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "4.1" 4 | env: 5 | - CXX=g++-4.8 6 | addons: 7 | apt: 8 | sources: 9 | - ubuntu-toolchain-r-test 10 | packages: 11 | - g++-4.8 12 | notifications: 13 | email: 14 | recipients: 15 | - builds@buildfire.com 16 | services: 17 | - xvfb 18 | script: 19 | - npm test 20 | # - npm run fnTest 21 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BuildFireSDK", 3 | "version": "1.0.0", 4 | "ignore": [ 5 | "**/.*", 6 | "node_modules", 7 | "bower_components", 8 | "test", 9 | "ftest" 10 | ], 11 | "dependencies": { 12 | "WebConsole": "*" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /fonticons/MaterialIcons-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/MaterialIcons-Regular.eot -------------------------------------------------------------------------------- /fonticons/MaterialIcons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/MaterialIcons-Regular.ttf -------------------------------------------------------------------------------- /fonticons/MaterialIcons-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/MaterialIcons-Regular.woff -------------------------------------------------------------------------------- /fonticons/MaterialIcons-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/MaterialIcons-Regular.woff2 -------------------------------------------------------------------------------- /fonticons/control/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/control/icomoon.eot -------------------------------------------------------------------------------- /fonticons/control/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/control/icomoon.ttf -------------------------------------------------------------------------------- /fonticons/control/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/control/icomoon.woff -------------------------------------------------------------------------------- /fonticons/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/icomoon.eot -------------------------------------------------------------------------------- /fonticons/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/icomoon.ttf -------------------------------------------------------------------------------- /fonticons/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/icomoon.woff -------------------------------------------------------------------------------- /fonticons/icomoon.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonticons/icomoon.woff2 -------------------------------------------------------------------------------- /fonts/Inter-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/Inter-Medium.otf -------------------------------------------------------------------------------- /fonts/Inter-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/Inter-Medium.ttf -------------------------------------------------------------------------------- /fonts/Inter-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/Inter-Medium.woff2 -------------------------------------------------------------------------------- /fonts/Inter-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/Inter-Regular.otf -------------------------------------------------------------------------------- /fonts/Inter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/Inter-Regular.ttf -------------------------------------------------------------------------------- /fonts/Inter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/Inter-Regular.woff2 -------------------------------------------------------------------------------- /fonts/apercu_bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/apercu_bold.eot -------------------------------------------------------------------------------- /fonts/apercu_bold.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/apercu_bold.svg -------------------------------------------------------------------------------- /fonts/apercu_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/apercu_bold.ttf -------------------------------------------------------------------------------- /fonts/apercu_bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/apercu_bold.woff -------------------------------------------------------------------------------- /fonts/apercu_regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/apercu_regular.eot -------------------------------------------------------------------------------- /fonts/apercu_regular.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/apercu_regular.svg -------------------------------------------------------------------------------- /fonts/apercu_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/apercu_regular.ttf -------------------------------------------------------------------------------- /fonts/apercu_regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/fonts/apercu_regular.woff -------------------------------------------------------------------------------- /images/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/images/favicon-16x16.png -------------------------------------------------------------------------------- /images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/images/favicon-32x32.png -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | // Generated on Fri Oct 09 2015 09:12:13 GMT-0700 (Pacific Daylight Time) 3 | 4 | module.exports = function(config) { 5 | config.set({ 6 | 7 | // base path that will be used to resolve all patterns (eg. files, exclude) 8 | basePath: '', 9 | 10 | 11 | // frameworks to use 12 | // available frameworks: https://npmjs.org/browse/keyword/karma-adapter 13 | frameworks: ['jasmine'], 14 | 15 | 16 | // list of files / patterns to load in the browser 17 | files: [ 18 | './scripts/buildfire.js', 19 | './test/parentPost.js', 20 | './test/*.spec.js' 21 | ], 22 | 23 | 24 | // list of files to exclude 25 | exclude: [ 26 | ], 27 | 28 | 29 | // preprocess matching files before serving them to the browser 30 | // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor 31 | preprocessors: { 32 | 'scripts/buildfire.js':['coverage'], 33 | }, 34 | 35 | 36 | // test results reporter to use 37 | // possible values: 'dots', 'progress' 38 | // available reporters: https://npmjs.org/browse/keyword/karma-reporter 39 | reporters: ['progress', 'coverage'], 40 | 41 | coverageReporter: { 42 | type: 'html', 43 | dir: 'test/coverage/', 44 | check: { 45 | global: { 46 | statements: 20 47 | } 48 | } 49 | }, 50 | 51 | // web server port 52 | port: 9876, 53 | 54 | 55 | // enable / disable colors in the output (reporters and logs) 56 | colors: true, 57 | 58 | 59 | // level of logging 60 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 61 | logLevel: config.LOG_INFO, 62 | 63 | 64 | // enable / disable watching file and executing tests whenever any file changes 65 | autoWatch: true, 66 | 67 | 68 | // start these browsers 69 | // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher 70 | browsers: ['PhantomJS'], // ,'Chrome', 'Safari', 'IE' 71 | 72 | 73 | // Continuous Integration mode 74 | // if true, Karma captures browsers, runs the tests and exits 75 | singleRun: true 76 | }); 77 | }; 78 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BuildFireSDK", 3 | "version": "1.112.1", 4 | "description": "This SDK helps in building BuildFire Plugins", 5 | "main": "index.js", 6 | "scripts": { 7 | "postinstall": "./node_modules/.bin/bower install", 8 | "fnTest": "node test/server.js", 9 | "test": ".\\node_modules\\.bin\\karma start karma.conf.js", 10 | "build": "gulp build", 11 | "lint": "eslint . --fix" 12 | }, 13 | "dependencies": { 14 | "bower": "^1.7.6" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "https:/github.com/BuildFire/sdk.git" 19 | }, 20 | "keywords": [ 21 | "BuildFire", 22 | "Plugins" 23 | ], 24 | "author": "Daniel Hindi", 25 | "license": "ISC", 26 | "devDependencies": { 27 | "body-parser": "1.11.0", 28 | "chai": "^3.3.0", 29 | "eslint": "^6.8.0", 30 | "express": "^4.0.0", 31 | "gulp": "^3.9.1", 32 | "gulp-concat": "^2.6.1", 33 | "gulp-header-comment": "^0.2.1", 34 | "gulp-sourcemaps": "^2.6.1", 35 | "gulp-uglify": "^3.0.0", 36 | "jasmine-core": "^2.8.0", 37 | "karma": "^0.13.10", 38 | "karma-chai": "^0.1.0", 39 | "karma-chrome-launcher": "^0.2.1", 40 | "karma-coverage": "^0.5.1", 41 | "karma-firefox-launcher": "^0.1.6", 42 | "karma-ie-launcher": "^0.2.0", 43 | "karma-jasmine": "^0.3.6", 44 | "karma-junit-reporter": "^0.3.3", 45 | "karma-mocha": "^0.2.0", 46 | "karma-phantomjs-launcher": "^0.2.1", 47 | "karma-safari-launcher": "^0.1.1", 48 | "mocha": "^2.2.5", 49 | "phantom": "0.8.4", 50 | "phantomjs": "^1.9.17", 51 | "run-sequence": "^2.1.0" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /pluginTester/app/media/fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/app/media/fb.png -------------------------------------------------------------------------------- /pluginTester/app/media/googleplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/app/media/googleplus.png -------------------------------------------------------------------------------- /pluginTester/app/media/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/app/media/twitter.png -------------------------------------------------------------------------------- /pluginTester/images/avatar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/images/avatar-2.png -------------------------------------------------------------------------------- /pluginTester/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/images/avatar.png -------------------------------------------------------------------------------- /pluginTester/media/PoweredByGiphy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/PoweredByGiphy.png -------------------------------------------------------------------------------- /pluginTester/media/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/avatar.png -------------------------------------------------------------------------------- /pluginTester/media/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/cover.png -------------------------------------------------------------------------------- /pluginTester/media/fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/fb.png -------------------------------------------------------------------------------- /pluginTester/media/googleplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/googleplus.png -------------------------------------------------------------------------------- /pluginTester/media/logo_apple_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/logo_apple_b.png -------------------------------------------------------------------------------- /pluginTester/media/logo_apple_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/logo_apple_w.png -------------------------------------------------------------------------------- /pluginTester/media/logo_facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/logo_facebook.png -------------------------------------------------------------------------------- /pluginTester/media/logo_google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/logo_google.png -------------------------------------------------------------------------------- /pluginTester/media/logo_x_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/logo_x_b.png -------------------------------------------------------------------------------- /pluginTester/media/logo_x_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildFire/sdk/35645e86e487f642f536b1ba49e0bb16d476fbfc/pluginTester/media/logo_x_w.png -------------------------------------------------------------------------------- /pluginTester/pages/controllers/apiKeysCtrl.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | $app.controller('apiKeysCtrl', ['$scope', 3 | function ($scope) { 4 | $scope.keys = {}; 5 | 6 | $scope.load = function () { 7 | var keys = localStorage.getItem('apiKeys'); 8 | if (keys) { 9 | keys = JSON.parse(keys); 10 | } 11 | $scope.keys = keys; 12 | }; 13 | 14 | $scope.load(); 15 | 16 | $scope.save = function () { 17 | var keys = {}; 18 | angular.copy($scope.keys, keys); 19 | localStorage.setItem('apiKeys', JSON.stringify(keys)); 20 | 21 | window.appContext.currentApp.apiKeys = keys; 22 | 23 | window.toast('Saved'); 24 | }; 25 | }]); 26 | -------------------------------------------------------------------------------- /pluginTester/pages/controllers/loginCtrl.js: -------------------------------------------------------------------------------- 1 | $app.controller('loginCtrl', ['$scope', '$http' 2 | , function ($scope, $http) { 3 | $scope.loggingIn = false; 4 | $scope.errors = {}; 5 | $scope.submit = function () { 6 | /// will auto navigate to dashboard on its own 7 | if ($scope.validate()) { 8 | $scope.loggingIn = true; 9 | 10 | $http.post('https://app.buildfire.com/api/login/controlPanel/', { 11 | email: $scope.username, 12 | password: $scope.password 13 | }, {bypassInterceptorForStatus: 404}) 14 | .success(function (user) { 15 | if (user) { 16 | localStorage.setItem('user', JSON.stringify(user)); 17 | window.currentUser = user; 18 | window.location.hash = '/'; 19 | } 20 | else { 21 | $scope.errors.serverError = 'Invalid username or password'; 22 | } 23 | }) 24 | .error(function (err) { 25 | if(err){ 26 | switch (err.code) { 27 | case 'authServiceUserExists': 28 | $scope.errors.serverError = 'Invalid account, make sure to use control panel account'; 29 | break; 30 | case 'NOTFOUND': 31 | $scope.errors.serverError = 'Invalid username or password'; 32 | break; 33 | } 34 | } 35 | }); 36 | } 37 | }; 38 | 39 | $scope.forgotPassword = function () { 40 | window.location = '/pages/forgetPassword.html'; 41 | }; 42 | 43 | $scope.validate = function () { 44 | $scope.errors.serverError = false; 45 | var valid = true; 46 | if (!$scope.username || !isValidEmail($scope.username)) { 47 | $scope.errors.email = true; 48 | valid = false; 49 | } else { 50 | $scope.errors.email = false; 51 | } 52 | 53 | 54 | if (!$scope.password) { 55 | $scope.errors.password = true; 56 | valid = false; 57 | } else { 58 | $scope.errors.password = false; 59 | } 60 | 61 | 62 | return valid; 63 | }; 64 | 65 | var isValidEmail = function (literal) { 66 | return (/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z\-0-9]{2,}))$/).test(literal); 67 | }; 68 | 69 | 70 | } 71 | ]); 72 | -------------------------------------------------------------------------------- /pluginTester/pages/controllers/settingsCtrl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Daniel on 11/8/2015. 3 | */ 4 | 5 | $app.controller('settingsCtrl', ['$scope', function ($scope) { 6 | let key = window.appContext.currentApp.appId; 7 | let context = { 8 | currentApp: window.appContext.currentApp, 9 | currentPlugin: { 10 | pluginId: key, 11 | pluginPath: '', 12 | instanceId: key, 13 | mode: 0 14 | } 15 | }; 16 | 17 | $scope.appContext = JSON.parse(JSON.stringify(context));// make a copy 18 | 19 | var tmr; 20 | $scope.$watch('appContext', function (newContext) { 21 | if (tmr) clearTimeout(tmr); 22 | tmr = setTimeout(function () { 23 | window.appContext = newContext; 24 | let key = window.appContext.currentApp.appId; 25 | let context = { 26 | currentApp: window.appContext.currentApp, 27 | currentPlugin: { 28 | pluginId: key, 29 | pluginPath: '', 30 | instanceId: key, 31 | mode: 0 32 | } 33 | }; 34 | window.localStorage.setItem('appContext', JSON.stringify(context)); 35 | } 36 | , 500); 37 | }, true); 38 | }]); -------------------------------------------------------------------------------- /pluginTester/pages/services/gdprService.js: -------------------------------------------------------------------------------- 1 | $app.service('gdprService', [function () { 2 | var service = {}; 3 | 4 | service.shouldShowAppTerms = function() { 5 | if (appContext.currentApp && appContext.currentApp.config && appContext.currentApp.config.TermsOfUse) { 6 | return appContext.currentApp.config.TermsOfUse.indexOf('appdocumentation.com') < 0; 7 | } else { 8 | return false; 9 | } 10 | }; 11 | 12 | return service; 13 | }]); 14 | -------------------------------------------------------------------------------- /pluginTester/pages/templates/login.html: -------------------------------------------------------------------------------- 1 | 36 | 37 |
{{ modal.body }}
7 |"+m()+"
"):a.insertContent(m())}),(n=e).ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:function(){return n.execCommand("mcePageBreak")}}),n.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:function(){return n.execCommand("mcePageBreak")}}),c=(o=e).getParam("pagebreak_separator","\x3c!-- pagebreak --\x3e"),t=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),o.on("BeforeSetContent",function(e){e.content=e.content.replace(t,m())}),o.on("PreInit",function(){o.serializer.addNodeFilter("img",function(e){for(var a,n,t=e.length;t--;)if((n=(a=e[t]).attr("class"))&&-1!==n.indexOf("mce-pagebreak")){var r=a.parent;if(o.schema.getBlockElements()[r.name]&&i(o)){r.type=3,r.value=c,r.raw=!0,a.remove();continue}a.type=3,a.value=c,a.raw=!0}})}),(r=e).on("ResolveName",function(e){"IMG"===e.target.nodeName&&r.dom.hasClass(e.target,g())&&(e.name="pagebreak")})})}(); -------------------------------------------------------------------------------- /pluginTester/scripts/lib/tinymce/js/tinymce/plugins/preview/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.6.1 (2020-11-25) 8 | */ 9 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.Env"),w=tinymce.util.Tools.resolve("tinymce.util.Tools"),i=function(e){var t=function(t){var n="",i=t.dom.encode,e=t.getParam("content_style","","string");n+='