1
0
mirror of https://github.com/flarum/core.git synced 2025-07-31 13:40:20 +02:00

Initial commit

This commit is contained in:
Toby Zerner
2015-09-16 16:00:08 +09:30
commit 825b496364
26 changed files with 599 additions and 0 deletions

3
extensions/embed/js/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
bower_components
node_modules
dist

View File

@@ -0,0 +1,7 @@
var gulp = require('flarum-gulp');
gulp({
modules: {
'embed': 'src/**/*.js'
}
});

View File

@@ -0,0 +1,7 @@
{
"private": true,
"devDependencies": {
"gulp": "^3.8.11",
"flarum-gulp": "^0.1.0"
}
}

View File

@@ -0,0 +1,5 @@
import app from 'flarum/app';
app.initializers.add('embed', () => {
});

View File

@@ -0,0 +1,7 @@
var gulp = require('flarum-gulp');
gulp({
modules: {
'embed': 'src/**/*.js'
}
});

View File

@@ -0,0 +1,7 @@
{
"private": true,
"devDependencies": {
"gulp": "^3.8.11",
"flarum-gulp": "^0.1.0"
}
}

View 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>
);
}
}

View 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());
});