diff --git a/client/coral-embed-stream/src/graphql/queries/index.js b/client/coral-embed-stream/src/graphql/queries/index.js
index ae01ea9f4..db4e08cde 100644
--- a/client/coral-embed-stream/src/graphql/queries/index.js
+++ b/client/coral-embed-stream/src/graphql/queries/index.js
@@ -1,9 +1,17 @@
import {graphql} from 'react-apollo';
import STREAM_QUERY from './streamQuery.graphql';
-import pym from 'coral-framework/PymConnection';
-let url = pym.parentUrl.split('#')[0] || 'http://localhost:3000/';
+function getQueryVariable(variable) {
+ let query = window.location.search.substring(1);
+ let vars = query.split('&');
+ for (let i = 0; i < vars.length; i++) {
+ let pair = vars[i].split('=');
+ if (decodeURIComponent(pair[0]) === variable) {
+ return decodeURIComponent(pair[1]);
+ }
+ }
+}
export const queryStream = graphql(STREAM_QUERY, {
- options: {variables: {asset_url: url}}
+ options: {variables: {asset_url: getQueryVariable('asset_url')}}
});
diff --git a/routes/assets/index.js b/routes/assets/index.js
new file mode 100644
index 000000000..e8c508b52
--- /dev/null
+++ b/routes/assets/index.js
@@ -0,0 +1,47 @@
+const express = require('express');
+const router = express.Router();
+
+const Assets = require('../../services/assets');
+
+const body = 'Lorem ipsum dolor sponge amet, consectetur adipiscing clam. Ut lobortis sollicitudin pillar a ornare. Curabitur dignissim vestibulum cay non rhoncus. Cras laoreet ante vel nunc hendrerit, shelf imperdiet neque egestas. Suspendisse aliquet iaculis fermentum. Talk volutpat, tellus posuere laoreet consequat, mi lacus laoreet massa, sed vehicula mauris velit non lectus. Integer non trust nec neque congue faucibus porttitor sit amet elkhorn.';
+
+router.get('/id/:asset_id', (req, res, next) => {
+
+ return Assets.findById(req.params.asset_id)
+ .then(asset => {
+ if (asset === null) {
+ return res.json({'message': 'Asset not found'});
+ }
+ res.render('article', {
+ title: asset.title,
+ asset_url: asset.url,
+ body: '',
+ basePath: '/client/embed/stream'
+ });
+ })
+ .catch((err) => next(err));
+});
+
+router.get('/title/:asset_title', (req, res) => {
+ return res.render('article', {
+ title: req.params.asset_title.split('-').join(' '),
+ asset_url: '',
+ body: body,
+ basePath: '/client/embed/stream'
+ });
+});
+
+router.get('/', (req, res, next) => {
+ let skip = req.query.skip ? parseInt(req.query.skip) : 0;
+ let limit = req.query.limit ? parseInt(req.query.limit) : 25;
+
+ return Assets.all(skip, limit)
+ .then(assets => {
+ res.render('articles', {
+ assets: assets
+ });
+ })
+ .catch(err => next(err));
+});
+
+module.exports = router;
diff --git a/routes/index.js b/routes/index.js
index 9ab0dff14..a1c18bbe2 100644
--- a/routes/index.js
+++ b/routes/index.js
@@ -4,17 +4,13 @@ const router = express.Router();
router.use('/api/v1', require('./api'));
router.use('/admin', require('./admin'));
router.use('/embed', require('./embed'));
+router.use('/assets', require('./assets'));
router.get('/', (req, res) => {
return res.render('article', {
title: 'Coral Talk',
- basePath: '/client/embed/stream'
- });
-});
-
-router.get('/assets/:asset_title', (req, res) => {
- return res.render('article', {
- title: req.params.asset_title.split('-').join(' '),
+ asset_url: '',
+ body: '',
basePath: '/client/embed/stream'
});
});
diff --git a/services/assets.js b/services/assets.js
index 569c7ee2d..24a161865 100644
--- a/services/assets.js
+++ b/services/assets.js
@@ -88,15 +88,18 @@ module.exports = class AssetsService {
* @param {String} value string to search by.
* @return {Promise}
*/
- static search(value) {
+ static search(value = '', skip = null, limit = null) {
if (value.length === 0) {
- return AssetsService.all();
+ return AssetsService.all(skip, limit);
} else {
- return AssetModel.find({
- $text: {
- $search: value
- }
- });
+ return AssetModel
+ .find({
+ $text: {
+ $search: value
+ }
+ })
+ .skip(skip)
+ .limit(limit);
}
}
@@ -110,7 +113,10 @@ module.exports = class AssetsService {
return AssetModel.find(query);
}
- static all() {
- return AssetModel.find({});
+ static all(skip = null, limit = null) {
+ return AssetModel
+ .find({})
+ .skip(skip)
+ .limit(limit);
}
};
diff --git a/views/article.ejs b/views/article.ejs
index c63acc62b..d0b468cf2 100644
--- a/views/article.ejs
+++ b/views/article.ejs
@@ -20,29 +20,39 @@
<%= title %>
-
- Lorem ipsum dolor sponge amet, consectetur adipiscing clam.
- Ut lobortis sollicitudin pillar a ornare. Curabitur dignissim
- vestibulum cay non rhoncus. Cras laoreet ante vel nunc hendrerit,
- shelf imperdiet neque egestas. Suspendisse aliquet iaculis fermentum.
- Talk volutpat, tellus posuere laoreet consequat, mi lacus laoreet massa,
- sed vehicula mauris velit non lectus. Integer non trust nec neque congue
- faucibus porttitor sit amet elkhorn.
-
- Visit the moderation console
+ <%= body %>
+ Admin - All Assets