mirror of
https://github.com/documize/community.git
synced 2025-07-27 17:19:42 +02:00
markdown links support, 404 ember page added
This commit is contained in:
parent
7c2051cc7a
commit
991b1a2740
14 changed files with 207 additions and 146 deletions
|
@ -1,49 +1,49 @@
|
||||||
{
|
{
|
||||||
"predef": [
|
"predef": [
|
||||||
"server",
|
"server",
|
||||||
"document",
|
"document",
|
||||||
"window",
|
"window",
|
||||||
"-Promise",
|
"-Promise",
|
||||||
"moment",
|
"moment",
|
||||||
"$",
|
"$",
|
||||||
"_",
|
"_",
|
||||||
"is",
|
"is",
|
||||||
"Mousetrap",
|
"Mousetrap",
|
||||||
"CodeMirror",
|
"CodeMirror",
|
||||||
"Intercom",
|
"Intercom",
|
||||||
"Materialize",
|
"Materialize",
|
||||||
"tinymce",
|
"tinymce",
|
||||||
"Tether",
|
"Tether",
|
||||||
"Tooltip",
|
"Tooltip",
|
||||||
"Drop",
|
"Drop",
|
||||||
"Dropzone",
|
"Dropzone",
|
||||||
"dragula",
|
"dragula",
|
||||||
"datetimepicker",
|
"datetimepicker",
|
||||||
"Waypoint"
|
"Waypoint"
|
||||||
],
|
],
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"boss": true,
|
"boss": true,
|
||||||
"curly": true,
|
"curly": true,
|
||||||
"debug": false,
|
"debug": false,
|
||||||
"devel": true,
|
"devel": true,
|
||||||
"eqeqeq": true,
|
"eqeqeq": true,
|
||||||
"evil": true,
|
"evil": true,
|
||||||
"forin": false,
|
"forin": false,
|
||||||
"immed": false,
|
"immed": false,
|
||||||
"laxbreak": false,
|
"laxbreak": false,
|
||||||
"newcap": true,
|
"newcap": true,
|
||||||
"noarg": true,
|
"noarg": true,
|
||||||
"noempty": false,
|
"noempty": false,
|
||||||
"nonew": false,
|
"nonew": false,
|
||||||
"nomen": false,
|
"nomen": false,
|
||||||
"onevar": false,
|
"onevar": false,
|
||||||
"plusplus": false,
|
"plusplus": false,
|
||||||
"regexp": false,
|
"regexp": false,
|
||||||
"undef": true,
|
"undef": true,
|
||||||
"sub": true,
|
"sub": true,
|
||||||
"strict": false,
|
"strict": false,
|
||||||
"white": false,
|
"white": false,
|
||||||
"eqnull": true,
|
"eqnull": true,
|
||||||
"esnext": true,
|
"esnext": true,
|
||||||
"unused": true
|
"unused": true
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,21 +32,20 @@ export default Ember.Component.extend(TooltipMixin, {
|
||||||
{ label: 'Search', selected: false }
|
{ label: 'Search', selected: false }
|
||||||
],
|
],
|
||||||
|
|
||||||
showSections: Ember.computed('tabs.@each.selected', function() {
|
showSections: Ember.computed('tabs.@each.selected', function () {
|
||||||
return this.get('tabs').findBy('label', 'Section').selected;
|
return this.get('tabs').findBy('label', 'Section').selected;
|
||||||
}),
|
}),
|
||||||
showAttachments: Ember.computed('tabs.@each.selected', function() {
|
showAttachments: Ember.computed('tabs.@each.selected', function () {
|
||||||
return this.get('tabs').findBy('label', 'Attachment').selected;
|
return this.get('tabs').findBy('label', 'Attachment').selected;
|
||||||
}),
|
}),
|
||||||
showSearch: Ember.computed('tabs.@each.selected', function() {
|
showSearch: Ember.computed('tabs.@each.selected', function () {
|
||||||
return this.get('tabs').findBy('label', 'Search').selected;
|
return this.get('tabs').findBy('label', 'Search').selected;
|
||||||
}),
|
}),
|
||||||
hasMatches: Ember.computed('matches', function() {
|
hasMatches: Ember.computed('matches', function () {
|
||||||
let m = this.get('matches');
|
let m = this.get('matches');
|
||||||
return m.documents.length || m.pages.length || m.attachments.length;
|
return m.documents.length || m.pages.length || m.attachments.length;
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
let self = this;
|
let self = this;
|
||||||
|
@ -64,6 +63,7 @@ export default Ember.Component.extend(TooltipMixin, {
|
||||||
|
|
||||||
didRender() {
|
didRender() {
|
||||||
this.addTooltip(document.getElementById("content-linker-button"));
|
this.addTooltip(document.getElementById("content-linker-button"));
|
||||||
|
this.addTooltip(document.getElementById("content-counter-button"));
|
||||||
},
|
},
|
||||||
|
|
||||||
willDestroyElement() {
|
willDestroyElement() {
|
||||||
|
|
|
@ -1,17 +1,24 @@
|
||||||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||||
//
|
//
|
||||||
// This software (Documize Community Edition) is licensed under
|
// This software (Documize Community Edition) is licensed under
|
||||||
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
//
|
//
|
||||||
// You can operate outside the AGPL restrictions by purchasing
|
// You can operate outside the AGPL restrictions by purchasing
|
||||||
// Documize Enterprise Edition and obtaining a commercial license
|
// Documize Enterprise Edition and obtaining a commercial license
|
||||||
// by contacting <sales@documize.com>.
|
// by contacting <sales@documize.com>.
|
||||||
//
|
//
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
|
import miscUtil from '../../../utils/misc';
|
||||||
|
|
||||||
|
const {
|
||||||
|
inject: { service }
|
||||||
|
} = Ember;
|
||||||
|
|
||||||
export default Ember.Component.extend({
|
export default Ember.Component.extend({
|
||||||
|
link: service(),
|
||||||
|
|
||||||
isDirty: false,
|
isDirty: false,
|
||||||
pageBody: "",
|
pageBody: "",
|
||||||
|
|
||||||
|
@ -45,6 +52,13 @@ export default Ember.Component.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
|
onInsertLink(link) {
|
||||||
|
let linkMarkdown = this.get('link').buildLink(link);
|
||||||
|
miscUtil.insertAtCursor($("#section-markdown-editor")[0], linkMarkdown);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
isDirty() {
|
isDirty() {
|
||||||
return this.get('isDirty');
|
return this.get('isDirty');
|
||||||
},
|
},
|
||||||
|
@ -62,4 +76,4 @@ export default Ember.Component.extend({
|
||||||
this.attrs.onAction(page, meta);
|
this.attrs.onAction(page, meta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -16,7 +16,7 @@ const {
|
||||||
} = Ember;
|
} = Ember;
|
||||||
|
|
||||||
export default Ember.Component.extend({
|
export default Ember.Component.extend({
|
||||||
appMeta: Ember.inject.service(),
|
appMeta: service(),
|
||||||
link: service(),
|
link: service(),
|
||||||
pageBody: "",
|
pageBody: "",
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||||
//
|
//
|
||||||
// This software (Documize Community Edition) is licensed under
|
// This software (Documize Community Edition) is licensed under
|
||||||
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
//
|
//
|
||||||
// You can operate outside the AGPL restrictions by purchasing
|
// You can operate outside the AGPL restrictions by purchasing
|
||||||
// Documize Enterprise Edition and obtaining a commercial license
|
// Documize Enterprise Edition and obtaining a commercial license
|
||||||
// by contacting <sales@documize.com>.
|
// by contacting <sales@documize.com>.
|
||||||
//
|
//
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
|
@ -19,4 +19,13 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
||||||
this.audit.record("viewed-document");
|
this.audit.record("viewed-document");
|
||||||
return this.get('documentService').getDocument(params.document_id);
|
return this.get('documentService').getDocument(params.document_id);
|
||||||
},
|
},
|
||||||
});
|
|
||||||
|
actions: {
|
||||||
|
error(error /*, transition*/ ) {
|
||||||
|
if (error) {
|
||||||
|
this.transitionTo('/not-found');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||||
//
|
//
|
||||||
// This software (Documize Community Edition) is licensed under
|
// This software (Documize Community Edition) is licensed under
|
||||||
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
//
|
//
|
||||||
// You can operate outside the AGPL restrictions by purchasing
|
// You can operate outside the AGPL restrictions by purchasing
|
||||||
// Documize Enterprise Edition and obtaining a commercial license
|
// Documize Enterprise Edition and obtaining a commercial license
|
||||||
// by contacting <sales@documize.com>.
|
// by contacting <sales@documize.com>.
|
||||||
//
|
//
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
|
@ -13,8 +13,7 @@ import Ember from 'ember';
|
||||||
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
||||||
|
|
||||||
export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
||||||
|
beforeModel() {
|
||||||
beforeModel: function () {
|
|
||||||
this.transitionTo('folders');
|
this.transitionTo('folders');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -101,5 +101,5 @@ export default Router.map(function () {
|
||||||
path: '/*wildcard'
|
path: '/*wildcard'
|
||||||
});
|
});
|
||||||
|
|
||||||
this.route('pods', function () {});
|
// this.route('pods', function () {});
|
||||||
});
|
});
|
||||||
|
|
|
@ -107,7 +107,7 @@ export default Ember.Service.extend({
|
||||||
// handle section link
|
// handle section link
|
||||||
if (link.linkType === "section") {
|
if (link.linkType === "section") {
|
||||||
let options = {};
|
let options = {};
|
||||||
options['page'] = link.targetId;
|
options['page'] = link.targetId;
|
||||||
router.transitionTo('document', link.folderId, folderSlug, link.documentId, documentSlug, { queryParams: options });
|
router.transitionTo('document', link.folderId, folderSlug, link.documentId, documentSlug, { queryParams: options });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -127,12 +127,5 @@ export default Ember.Service.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
when attachment deleted:
|
doc meta to show inbound and outbound links.
|
||||||
mark as orphan references where link.documentid = document.refId
|
|
||||||
|
|
||||||
permission checks:
|
|
||||||
can view space
|
|
||||||
can view document
|
|
||||||
|
|
||||||
Markdown editor support
|
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,6 +1,21 @@
|
||||||
.edit-tools {
|
.edit-tools {
|
||||||
margin: 0 0 0 20px;
|
margin: 0 0 0 20px;
|
||||||
min-height: 600px;
|
min-height: 600px;
|
||||||
|
|
||||||
|
> .toolbar {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
> .item {
|
||||||
|
list-style-type: none;
|
||||||
|
margin: 0 0 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-counter-dialog {
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-linker-dialog {
|
.content-linker-dialog {
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
<div class="edit-tools">
|
<div class="edit-tools">
|
||||||
|
|
||||||
<div class="square-button-mono button-gray" id="content-linker-button" data-tooltip="Insert content link" data-tooltip-position="left middle">
|
<ul class="toolbar">
|
||||||
<i class="material-icons color-white">link</i>
|
<li class="item">
|
||||||
</div>
|
<div class="square-button-mono button-gray" id="content-linker-button" data-tooltip="Reference link" data-tooltip-position="left middle">
|
||||||
|
<i class="material-icons color-white">link</i>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
{{#dropdown-dialog target="content-linker-button" position="bottom right" button="Insert" color="flat-blue" onAction=(action 'onInsertLink')}}
|
{{#dropdown-dialog target="content-linker-button" position="bottom right" button="Insert" color="flat-blue" onAction=(action 'onInsertLink')}}
|
||||||
<div class="content-linker-dialog">
|
<div class="content-linker-dialog">
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
{{#section/base-editor document=document folder=folder page=page isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
{{#section/base-editor document=document folder=folder page=page isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-6">
|
<div class="col-xs-6 col-sm-6 col-md-6 col-lg-6">
|
||||||
{{focus-textarea id="section-markdown-editor" class="mousetrap bordered" value=pageBody}}
|
{{focus-textarea id="section-markdown-editor" class="mousetrap bordered" value=pageBody}}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-6">
|
<div class="col-xs-5 col-sm-5 col-md-5 col-lg-5">
|
||||||
<div id="section-markdown-preview" class="mousetrap bordered wysiwyg">
|
<div id="section-markdown-preview" class="mousetrap bordered wysiwyg">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">
|
||||||
|
{{document/edit-tools document=document folder=folder page=page onInsertLink=(action 'onInsertLink')}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/section/base-editor}}
|
{{/section/base-editor}}
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
{{#section/base-editor document=document folder=folder page=page isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
{{#section/base-editor document=document folder=folder page=page isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-11 col-sm-11 col-md-11 col-lg-11">
|
||||||
|
{{focus-textarea value=pageBody id="rich-text-editor" class="mousetrap"}}
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="pull-left width-96">
|
<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">
|
||||||
{{focus-textarea value=pageBody id="rich-text-editor" class="mousetrap"}}
|
{{document/edit-tools document=document folder=folder page=page onInsertLink=(action 'onInsertLink')}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="pull-left">
|
|
||||||
{{document/edit-tools document=document folder=folder page=page onInsertLink=(action 'onInsertLink')}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{/section/base-editor}}
|
{{/section/base-editor}}
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
|
||||||
//
|
//
|
||||||
// This software (Documize Community Edition) is licensed under
|
// This software (Documize Community Edition) is licensed under
|
||||||
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
//
|
//
|
||||||
// You can operate outside the AGPL restrictions by purchasing
|
// You can operate outside the AGPL restrictions by purchasing
|
||||||
// Documize Enterprise Edition and obtaining a commercial license
|
// Documize Enterprise Edition and obtaining a commercial license
|
||||||
// by contacting <sales@documize.com>.
|
// by contacting <sales@documize.com>.
|
||||||
//
|
//
|
||||||
// https://documize.com
|
// https://documize.com
|
||||||
|
|
||||||
// from http://thecodeship.com/web-development/alternative-to-javascript-evil-setinterval/
|
// from http://thecodeship.com/web-development/alternative-to-javascript-evil-setinterval/
|
||||||
function interval(func, wait, times) {
|
function interval(func, wait, times) {
|
||||||
var interv = function(w, t) {
|
var interv = function (w, t) {
|
||||||
return function() {
|
return function () {
|
||||||
if (typeof t === "undefined" || t-- > 0) {
|
if (typeof t === "undefined" || t-- > 0) {
|
||||||
setTimeout(interv, w);
|
setTimeout(interv, w);
|
||||||
try {
|
try {
|
||||||
func.call(null);
|
func.call(null);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
t = 0;
|
t = 0;
|
||||||
throw e.toString();
|
throw e.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}(wait, times);
|
}(wait, times);
|
||||||
|
|
||||||
setTimeout(interv, wait);
|
setTimeout(interv, wait);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function wrapping code.
|
// Function wrapping code.
|
||||||
|
@ -35,12 +35,34 @@ function interval(func, wait, times) {
|
||||||
// e.g. var fun1 = wrapFunction(sayStuff, this, ["Hello, world!"]);
|
// e.g. var fun1 = wrapFunction(sayStuff, this, ["Hello, world!"]);
|
||||||
// http://stackoverflow.com/questions/899102/how-do-i-store-javascript-functions-in-a-queue-for-them-to-be-executed-eventuall
|
// http://stackoverflow.com/questions/899102/how-do-i-store-javascript-functions-in-a-queue-for-them-to-be-executed-eventuall
|
||||||
function wrapFunction(fn, context, params) {
|
function wrapFunction(fn, context, params) {
|
||||||
return function() {
|
return function () {
|
||||||
fn.apply(context, params);
|
fn.apply(context, params);
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertAtCursor(myField, myValue) {
|
||||||
|
//IE support
|
||||||
|
if (document.selection) {
|
||||||
|
myField.focus();
|
||||||
|
let sel = document.selection.createRange();
|
||||||
|
sel.text = myValue;
|
||||||
|
}
|
||||||
|
//MOZILLA and others
|
||||||
|
else if (myField.selectionStart || myField.selectionStart === '0') {
|
||||||
|
var startPos = myField.selectionStart;
|
||||||
|
var endPos = myField.selectionEnd;
|
||||||
|
myField.value = myField.value.substring(0, startPos) +
|
||||||
|
myValue +
|
||||||
|
myField.value.substring(endPos, myField.value.length);
|
||||||
|
myField.selectionStart = startPos + myValue.length;
|
||||||
|
myField.selectionEnd = startPos + myValue.length;
|
||||||
|
} else {
|
||||||
|
myField.value += myValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
interval,
|
interval,
|
||||||
wrapFunction
|
wrapFunction,
|
||||||
};
|
insertAtCursor
|
||||||
|
};
|
||||||
|
|
|
@ -13,50 +13,50 @@
|
||||||
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
|
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
|
||||||
var isDevelopment = EmberApp.env() === 'development';
|
var isDevelopment = EmberApp.env() === 'development';
|
||||||
|
|
||||||
module.exports = function(defaults) {
|
module.exports = function (defaults) {
|
||||||
var app = new EmberApp(defaults, {
|
var app = new EmberApp(defaults, {
|
||||||
fingerprint: {
|
fingerprint: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
extensions: ['js', 'css'],
|
extensions: ['js', 'css'],
|
||||||
exclude: ['tinymce/**', 'codemirror/**']
|
exclude: ['tinymce/**', 'codemirror/**']
|
||||||
},
|
},
|
||||||
|
|
||||||
minifyJS: {
|
minifyJS: {
|
||||||
enabled: !isDevelopment,
|
enabled: !isDevelopment,
|
||||||
options: {
|
options: {
|
||||||
exclude: ['tinymce/**', 'codemirror/**']
|
exclude: ['tinymce/**', 'codemirror/**']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
minifyCSS: {
|
minifyCSS: {
|
||||||
enabled: !isDevelopment,
|
enabled: !isDevelopment,
|
||||||
options: {
|
options: {
|
||||||
exclude: ['tinymce/**', 'codemirror/**']
|
exclude: ['tinymce/**', 'codemirror/**']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
sourcemaps: {
|
sourcemaps: {
|
||||||
enabled: isDevelopment,
|
enabled: isDevelopment,
|
||||||
extensions: ['js']
|
extensions: ['js']
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.import('vendor/dropzone.js');
|
app.import('vendor/dropzone.js');
|
||||||
app.import('vendor/is.js');
|
app.import('vendor/is.js');
|
||||||
app.import('vendor/md5.js');
|
app.import('vendor/md5.js');
|
||||||
app.import('vendor/moment.js');
|
app.import('vendor/moment.js');
|
||||||
app.import('vendor/mousetrap.js');
|
app.import('vendor/mousetrap.js');
|
||||||
app.import('vendor/table-editor.min.js');
|
app.import('vendor/table-editor.min.js');
|
||||||
app.import('vendor/underscore.js');
|
app.import('vendor/underscore.js');
|
||||||
app.import('vendor/bootstrap.css');
|
app.import('vendor/bootstrap.css');
|
||||||
app.import('vendor/tether.js');
|
app.import('vendor/tether.js');
|
||||||
app.import('vendor/drop.js');
|
app.import('vendor/drop.js');
|
||||||
app.import('vendor/tooltip.js');
|
app.import('vendor/tooltip.js');
|
||||||
app.import('vendor/markdown-it.min.js');
|
app.import('vendor/markdown-it.min.js');
|
||||||
app.import('vendor/dragula.js');
|
app.import('vendor/dragula.js');
|
||||||
app.import('vendor/datetimepicker.min.js');
|
app.import('vendor/datetimepicker.min.js');
|
||||||
app.import('vendor/hoverIntent.js');
|
app.import('vendor/hoverIntent.js');
|
||||||
app.import('vendor/waypoints.js');
|
app.import('vendor/waypoints.js');
|
||||||
|
|
||||||
return app.toTree();
|
return app.toTree();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue