Skip to content

Instantly share code, notes, and snippets.

View mmintel's full-sized avatar
👋
Looking for awesome opportunities

Marc Mintel mmintel

👋
Looking for awesome opportunities
View GitHub Profile
@mmintel
mmintel / .htaccess
Last active August 26, 2016 12:59
Kirby with Dokku
# Kirby .htaccess
# rewrite rules
<IfModule mod_rewrite.c>
# enable awesome urls. i.e.:
# http://yourdomain.com/about-us/team
RewriteEngine on
@mmintel
mmintel / app.js
Last active May 11, 2018 13:22
Code snippets für eine Javascript Architektur
// Lade alle Module aus dem Ordner und speicher Sie in der Variable ab
import * as modules from './modules';
class App {
constructor() {
// Speicher die Module in der App
this.modules = {};
}
init() {
// Importiere das Modul aus der Lib.
import Modal from '../lib/modal';
// Exportiere eine init function in der alles nötige für das Modul initialisiert wird.
export default function init() {
return new Modal({
nodes: document.querySelectorAll('[data-modal]'),
overlay: document.querySelectorAll('[data-modal-overlay]')[0],
triggers: {
open: document.querySelectorAll('[data-modal-open]'),
// Importiere ein Modul (bspw. modals) und exportiere es direkt.
// Dient nur dafür die ganzen Module unter einer Datei zu bündeln.
// So lässt sich leicht durch alle Module itererieren.
export { default as modals } from './modals';
export default class Manager {
constructor() {
// Speicher alle Instanzen im Manager
this.instances = [];
}
// Filtere HTML Elemente nach einem Attribut.
// So können wir die Komponenten Gruppen ausmachen.
static filterNodesByAttribute(nodes, attribute, value) {
return [...nodes].filter(node =>
import Modal from './container';
import Manager from './manager';
// Wir erstellen uns ein paar Standard-Werte,
// damit wir nicht jedes mal alles konfigurieren müssen.
const DEFAULTS = {
id: 'data-modal',
overlay: 'data-modal-overlay',
openTrigger: 'data-modal-open',
closeTrigger: 'data-modal-close',
import View from './view';
import Model from './model';
import Controller from './controller';
export default class Modal {
constructor(options) {
this.model = new Model();
this.controller = new Controller(this.model);
this.view = new View(this.controller, options);
}
export default class Model {
constructor() {
// Speicher alle Beobachter
this.observers = [];
}
// Füge einen neuen Beobachter hinzu
registerObserver(observer) {
this.observers.push(observer);
}
import Model from './model';
export default class ModalModel extends Model {
constructor() {
super();
// Modal offen, oder nicht?
this._isOpen = false;
}