glintcms-starter-glintcms
Version:
This is a WebSite implementation with GlintCMS. It shows how you can use GlintCMS.
84 lines (65 loc) • 2.36 kB
JavaScript
var debug = require('debug')('page-filemanager');
var router = require('page.js');
var isBrowser = require('is-browser');
var defaults = require('defaults');
var c = require('./config');
module.exports = function filemanager(o) {
o = defaults(o, c);
return router(o.route, function(req) {
debug('filemanager route', o.route);
// get view url query right
// TODO use some sort of query parser
var buttonList = document.querySelector('.filemanager .js-list');
if (buttonList) {
buttonList.addEventListener('click', function(e) {
var name = 'list';
e.preventDefault();
if (!~location.search.indexOf(name)) {
var search = location.search.length ? location.search += '&' + name : '?' + name;
location.search = search;
}
});
}
var buttonPreview = document.querySelector('.filemanager .js-preview');
if (buttonPreview) {
buttonPreview.addEventListener('click', function(e) {
e.preventDefault();
var name = 'list';
if (~location.search.indexOf('list')) {
var search = location.search;
search = search.replace('?' + name, '');
search = search.replace('&' + name, '');
location.search = search;
}
});
}
// TODO move to CKEDITOR plugin
// handle CKEDITOR file api stuff
if (window.opener && window.opener.CKEDITOR) {
function queryString(search) {
var queryString = search || location.search;
queryString = queryString.trim().replace(/^(\?|#)/, '');
queryString = queryString.split('&');
var param = {};
var query = queryString.forEach(function(query) {
var segment = query.split('=');
param[segment[0]] = segment.length > 1 ? segment[1] : true;
});
return param;
}
var query = queryString();
var el = document.querySelectorAll(o.selectable);
var links = [].slice.call(el);
links.forEach(function(link) {
link.addEventListener('click', function(e) {
e.preventDefault();
var ref = window.opener;
ref.CKEDITOR.tools.callFunction(query.CKEditorFuncNum, link.getAttribute('href'));
window.close();
return false;
}, false);
});
}
// END CKEDITOR plugin
});
};