mirror of
https://github.com/flarum/core.git
synced 2025-07-31 13:40:20 +02:00
Initial commit
This commit is contained in:
3
extensions/embed/js/.gitignore
vendored
Normal file
3
extensions/embed/js/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
bower_components
|
||||
node_modules
|
||||
dist
|
7
extensions/embed/js/admin/Gulpfile.js
Normal file
7
extensions/embed/js/admin/Gulpfile.js
Normal file
@@ -0,0 +1,7 @@
|
||||
var gulp = require('flarum-gulp');
|
||||
|
||||
gulp({
|
||||
modules: {
|
||||
'embed': 'src/**/*.js'
|
||||
}
|
||||
});
|
7
extensions/embed/js/admin/package.json
Normal file
7
extensions/embed/js/admin/package.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"gulp": "^3.8.11",
|
||||
"flarum-gulp": "^0.1.0"
|
||||
}
|
||||
}
|
5
extensions/embed/js/admin/src/main.js
Normal file
5
extensions/embed/js/admin/src/main.js
Normal file
@@ -0,0 +1,5 @@
|
||||
import app from 'flarum/app';
|
||||
|
||||
app.initializers.add('embed', () => {
|
||||
|
||||
});
|
7
extensions/embed/js/forum/Gulpfile.js
Normal file
7
extensions/embed/js/forum/Gulpfile.js
Normal file
@@ -0,0 +1,7 @@
|
||||
var gulp = require('flarum-gulp');
|
||||
|
||||
gulp({
|
||||
modules: {
|
||||
'embed': 'src/**/*.js'
|
||||
}
|
||||
});
|
7
extensions/embed/js/forum/package.json
Normal file
7
extensions/embed/js/forum/package.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"gulp": "^3.8.11",
|
||||
"flarum-gulp": "^0.1.0"
|
||||
}
|
||||
}
|
40
extensions/embed/js/forum/src/components/DiscussionPage.js
Normal file
40
extensions/embed/js/forum/src/components/DiscussionPage.js
Normal file
@@ -0,0 +1,40 @@
|
||||
import Component from 'flarum/Component';
|
||||
import PostStream from 'flarum/components/PostStream';
|
||||
|
||||
export default class DiscussionPage extends Component {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
|
||||
/**
|
||||
* The discussion that is being viewed.
|
||||
*
|
||||
* @type {Discussion}
|
||||
*/
|
||||
const discussion = this.discussion = app.preloadedDocument();
|
||||
|
||||
let includedPosts = [];
|
||||
if (discussion.payload && discussion.payload.included) {
|
||||
includedPosts = discussion.payload.included
|
||||
.filter(record => record.type === 'posts' && record.relationships && record.relationships.discussion)
|
||||
.map(record => app.store.getById('posts', record.id))
|
||||
.sort((a, b) => a.id() - b.id())
|
||||
.slice(0, 20);
|
||||
}
|
||||
|
||||
this.stream = new PostStream({discussion, includedPosts});
|
||||
}
|
||||
|
||||
view() {
|
||||
return (
|
||||
<div className="DiscussionPage">
|
||||
<div class="container">
|
||||
<div className="DiscussionPage-discussion">
|
||||
<div className="DiscussionPage-stream">
|
||||
{this.stream.render()}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
28
extensions/embed/js/forum/src/main.js
Normal file
28
extensions/embed/js/forum/src/main.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import { override } from 'flarum/extend';
|
||||
import app from 'flarum/app';
|
||||
import Composer from 'flarum/components/Composer';
|
||||
import ModalManager from 'flarum/components/ModalManager';
|
||||
import AlertManager from 'flarum/components/AlertManager';
|
||||
|
||||
import DiscussionPage from 'embed/components/DiscussionPage';
|
||||
|
||||
app.initializers.add('boot', () => {
|
||||
override(m, 'route', function(original, root, arg1, arg2, vdom) {
|
||||
if (root.addEventListener || root.attachEvent) {
|
||||
root.href = vdom.attrs.href;
|
||||
root.target = '_blank';
|
||||
|
||||
// TODO: If href leads to a post within this discussion that we have
|
||||
// already loaded, then scroll to it?
|
||||
return;
|
||||
}
|
||||
|
||||
original.apply(this, arguments);
|
||||
});
|
||||
|
||||
app.composer = m.mount(document.getElementById('composer'), Composer.component());
|
||||
app.modal = m.mount(document.getElementById('modal'), ModalManager.component());
|
||||
app.alerts = m.mount(document.getElementById('alerts'), AlertManager.component());
|
||||
|
||||
m.mount(document.getElementById('content'), DiscussionPage.component());
|
||||
});
|
Reference in New Issue
Block a user