Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate thememapper pattern #31

Closed
wants to merge 13 commits into from
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -10,3 +10,6 @@ develop-eggs/
extras/
parts/
var/
bower_components/
build/
node_modules/
10 changes: 10 additions & 0 deletions mockup/.editorconfig
@@ -0,0 +1,10 @@
# http://editorconfig.org
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
30 changes: 30 additions & 0 deletions mockup/.jshintrc
@@ -0,0 +1,30 @@
{
"bitwise": true,
"curly": true,
"eqeqeq": true,
"immed": true,
"latedef": true,
"newcap": true,
"noarg": true,
"noempty": true,
"nonew": true,
"plusplus": true,
"undef": true,
"strict": true,
"trailing": true,
"browser": true,
"evil": true,
"globals": {
"console": true,
"it": true,
"describe": true,
"afterEach": true,
"beforeEach": true,
"define": false,
"requirejs": true,
"require": false,
"tinymce": true,
"document": false,
"window": false
}
}
34 changes: 34 additions & 0 deletions mockup/Gruntfile.js
@@ -0,0 +1,34 @@
/* globals module:true */

module.exports = function(grunt) {
'use strict';

var MockupGrunt = require('./bower_components/mockup-core/js/grunt'),
requirejsOptions = require('./config'),
mockup = new MockupGrunt(requirejsOptions);

mockup.registerBundle('thememapperbundle', {
less: {
options : {
modifyVars : {
bowerPath: '"bower_components/"',
mockupPath: '"bower_components/plone-mockup/patterns/"',
mockuplessPath: '"less/"'
}
}
}
}, {
url: 'thememapperbundle'
});

mockup.initGrunt(grunt, {
sed: {
bootstrap: {
path: 'node_modules/lcov-result-merger/index.js',
pattern: 'throw new Error\\(\'Unknown Prefix ',
replacement: '//throw// new Error(\'Unknown Prefix '
}
}
});

};
40 changes: 40 additions & 0 deletions mockup/Makefile
@@ -0,0 +1,40 @@
GIT = git
NPM = npm
NPM_VERSION = $(shell npm -v)

GRUNT = ./node_modules/grunt-cli/bin/grunt
BOWER = ./node_modules/bower/bin/bower
NODE_PATH = ./node_modules

DEBUG =
ifeq ($(debug), true)
DEBUG = --debug
endif
VERBOSE =
ifeq ($(verbose), true)
VERBOSE = --verbose
endif


all: bundles

bundles: bundle-thememapperbundle

bundle-thememapperbundle:
mkdir -p build
NODE_PATH=$(NODE_PATH) $(GRUNT) bundle-thememapperbundle
cp ./build/thememapperbundle.min.* ../src/plone/app/theming/browser/resources/

test:
NODE_PATH=$(NODE_PATH) $(GRUNT) test $(DEBUG) $(VERBOSE) --pattern=$(pattern)

test-once:
NODE_PATH=$(NODE_PATH) $(GRUNT) test_once $(DEBUG) $(VERBOSE) --pattern=$(pattern)

test-dev:
NODE_PATH=$(NODE_PATH) $(GRUNT) test_dev $(DEBUG) $(VERBOSE) --pattern=$(pattern)

test-ci:
NODE_PATH=$(NODE_PATH) $(GRUNT) test_ci $(DEBUG) $(VERBOSE)

.PHONY: bundles bundle-bundle-thememapperbundle test test-once test-dev test-ci
8 changes: 8 additions & 0 deletions mockup/README.md
@@ -0,0 +1,8 @@
# thememapperbundle

Maintainer: [Eric BREHAULT]


## Introduction

This product may contain traces of nuts.
11 changes: 11 additions & 0 deletions mockup/bower.json
@@ -0,0 +1,11 @@
{
"name": "thememapperbundle",
"version": "0.0.1",
"description": "",
"dependencies": {
"plone-mockup": "1.7.0"
},
"devDependencies": {
"chai": "1.7.2"
}
}
169 changes: 169 additions & 0 deletions mockup/config.js
@@ -0,0 +1,169 @@
(function() {
'use strict';
var tinymcePlugins = ['advlist', 'anchor', 'autolink', 'autoresize', 'autosave', 'bbcode', 'charmap',
'code', 'colorpicker', 'contextmenu', 'directionality', 'emoticons', 'fullpage',
'fullscreen', 'hr', 'image', 'importcss', 'insertdatetime', 'layer', 'legacyoutput',
'link', 'lists', 'media', 'nonbreaking', 'noneditable', 'pagebreak', 'paste',
'preview', 'print', 'save', 'searchreplace', 'spellchecker', 'tabfocus', 'table',
'template', 'textcolor', 'textpattern', 'visualblocks', 'visualchars', 'wordcount'];

var requirejsOptions = {
baseUrl: './',
wrap: true,
almond: true,
optimize: 'none',
paths: {
'ace': 'bower_components/ace-builds/src/ace',
'ace-theme-monokai': 'bower_components/ace-builds/src/theme-monokai',
'ace-mode-text': 'bower_components/ace-builds/src/mode-text',
'ace-mode-javascript': 'bower_components/ace-builds/src/mode-javascript',
'ace-mode-css': 'bower_components/ace-builds/src/mode-css',
'backbone': 'bower_components/backbone/backbone',
'backbone.paginator': 'bower_components/backbone.paginator/lib/backbone.paginator',
'bootstrap-alert': 'bower_components/bootstrap/js/alert',
'bootstrap-collapse': 'bower_components/bootstrap/js/collapse',
'bootstrap-dropdown': 'bower_components/bootstrap/js/dropdown',
'bootstrap-tooltip': 'bower_components/bootstrap/js/tooltip',
'bootstrap-transition': 'bower_components/bootstrap/js/transition',
'chai': 'bower_components/chai/chai',
'docs-getting-started': 'bower_components/plone-mockup/GETTING_STARTED.md',
'docs-learn': 'bower_components/plone-mockup/LEARN.md',
'docs-contribute': 'bower_components/plone-mockup/CONTRIBUTE.md',
'domready': 'bower_components/domready/ready',
'dropzone': 'bower_components/dropzone/downloads/dropzone-amd-module',
'expect': 'bower_components/expect/index',
'jqtree': 'bower_components/jqtree/tree.jquery',
'jquery': 'bower_components/jquery/dist/jquery',
'jquery.form': 'bower_components/jquery-form/jquery.form',
'jquery.cookie': 'bower_components/jquery.cookie/jquery.cookie',
'jquery.event.drag': 'bower_components/plone-mockup/lib/jquery.event.drag',
'jquery.event.drop': 'bower_components/plone-mockup/lib/jquery.event.drop',
'JSXTransformer': 'bower_components/react/JSXTransformer',
'marked': 'bower_components/marked/lib/marked',
'mockup-bundles-docs': 'bower_components/plone-mockup/js/bundles/docs',
'mockup-bundles-plone': 'bower_components/plone-mockup/js/bundles/plone',
'mockup-bundles-structure': 'bower_components/plone-mockup/js/bundles/structure',
'mockup-bundles-tiles': 'bower_components/plone-mockup/js/bundles/tiles',
'mockup-bundles-widgets': 'bower_components/plone-mockup/js/bundles/widgets',
'mockup-bundles-filemanager': 'bower_components/plone-mockup/js/bundles/filemanager',
'mockup-bundles-resourceregistry': 'bower_components/plone-mockup/js/bundles/resourceregistry',
'mockup-docsapp': 'bower_components/plone-mockup/js/docsapp',
'mockup-docs': 'bower_components/mockup-core/js/docs/app',
'mockup-docs-page': 'bower_components/mockup-core/js/docs/page',
'mockup-docs-pattern': 'bower_components/mockup-core/js/docs/pattern',
'mockup-docs-view': 'bower_components/mockup-core/js/docs/view',
'mockup-docs-navigation': 'bower_components/mockup-core/js/docs/navigation',
'mockup-fakeserver': 'bower_components/plone-mockup/tests/fakeserver',
'mockup-iframe': 'bower_components/plone-mockup/js/iframe',
'mockup-iframe_init': 'bower_components/plone-mockup/js/iframe_init',
'mockup-patterns-accessibility': 'bower_components/plone-mockup/patterns/accessibility/pattern',
'mockup-patterns-autotoc': 'bower_components/plone-mockup/patterns/autotoc/pattern',
'mockup-patterns-backdrop': 'bower_components/plone-mockup/patterns/backdrop/pattern',
'mockup-patterns-base': 'bower_components/mockup-core/js/pattern',
'mockup-patterns-sortable': 'bower_components/plone-mockup/patterns/sortable/pattern',
'mockup-patterns-formautofocus': 'bower_components/plone-mockup/patterns/formautofocus/pattern',
'mockup-patterns-formunloadalert': 'bower_components/plone-mockup/patterns/formunloadalert/pattern',
'mockup-patterns-modal': 'bower_components/plone-mockup/patterns/modal/pattern',
'mockup-patterns-moment': 'bower_components/plone-mockup/patterns/moment/pattern',
'mockup-patterns-pickadate': 'bower_components/plone-mockup/patterns/pickadate/pattern',
'mockup-patterns-preventdoublesubmit': 'bower_components/plone-mockup/patterns/preventdoublesubmit/pattern',
'mockup-patterns-querystring': 'bower_components/plone-mockup/patterns/querystring/pattern',
'mockup-patterns-relateditems': 'bower_components/plone-mockup/patterns/relateditems/pattern',
'mockup-patterns-select2': 'bower_components/plone-mockup/patterns/select2/pattern',
'mockup-patterns-structure-url': 'bower_components/plone-mockup/patterns/structure',
'mockup-patterns-structure': 'bower_components/plone-mockup/patterns/structure/pattern',
'mockup-patterns-texteditor': 'bower_components/plone-mockup/patterns/texteditor/pattern',
'mockup-patterns-filemanager-url': 'bower_components/plone-mockup/patterns/filemanager',
'mockup-patterns-filemanager': 'bower_components/plone-mockup/patterns/filemanager/pattern',
'mockup-patterns-thememapper-url': 'bower_components/plone-mockup/patterns/thememapper',
'mockup-patterns-thememapper': 'bower_components/plone-mockup/patterns/thememapper/pattern',
'mockup-patterns-tablesorter': 'bower_components/plone-mockup/patterns/tablesorter/pattern',
'mockup-patterns-tinymce-url': 'bower_components/plone-mockup/patterns/tinymce',
'mockup-patterns-tinymce': 'bower_components/plone-mockup/patterns/tinymce/pattern',
'mockup-patterns-toggle': 'bower_components/plone-mockup/patterns/toggle/pattern',
'mockup-patterns-tooltip': 'bower_components/plone-mockup/patterns/tooltip/pattern',
'mockup-patterns-tree': 'bower_components/plone-mockup/patterns/tree/pattern',
'mockup-patterns-upload-url': 'bower_components/plone-mockup/patterns/upload',
'mockup-patterns-upload': 'bower_components/plone-mockup/patterns/upload/pattern',
'mockup-patterns-resourceregistry': 'bower_components/plone-mockup/patterns/resourceregistry/pattern',
'mockup-patterns-eventedit': 'bower_components/plone-mockup/patterns/eventedit/pattern',
'mockup-registry': 'bower_components/mockup-core/js/registry',
'mockup-router': 'bower_components/plone-mockup/js/router',
'mockup-utils': 'bower_components/plone-mockup/js/utils',
'mockup-i18n': 'bower_components/plone-mockup/js/i18n',
'mockup-ui-url': 'bower_components/plone-mockup/js/ui',
'moment': 'bower_components/moment/moment',
'picker': 'bower_components/pickadate/lib/picker',
'picker.date': 'bower_components/pickadate/lib/picker.date',
'picker.time': 'bower_components/pickadate/lib/picker.time',
'react': 'bower_components/react/react',
'select2': 'bower_components/select2/select2',
'sinon': 'bower_components/sinonjs/sinon',
'tinymce': 'bower_components/tinymce-builded/js/tinymce/tinymce',
'tinymce-modern-theme': 'bower_components/tinymce/themes/modern/theme',
'text': 'bower_components/requirejs-text/text',
'mockup-bundles-thememapperbundle': 'js/bundles/thememapperbundle',
'thememapperbundle-patterns-fakepattern': 'js/patterns/fakepattern',
'underscore': 'bower_components/lodash/dist/lodash.underscore'
},
shim: {
'JSXTransformer': { exports: 'window.JSXTransformer' },
'backbone': { exports: 'window.Backbone', deps: ['underscore', 'jquery'] },
'backbone.paginator': { exports: 'window.Backbone.Paginator', deps: ['backbone'] },
'bootstrap-alert': { deps: ['jquery'] },
'bootstrap-collapse': {exports: 'window.jQuery.fn.collapse.Constructor', deps: ['jquery']},
'bootstrap-dropdown': { deps: ['jquery'] },
'bootstrap-tooltip': { deps: ['jquery'] },
'bootstrap-transition': {exports: 'window.jQuery.support.transition', deps: ['jquery']},
'expect': {exports: 'window.expect'},
'jqtree': { deps: ['jquery'] },
'jquery.cookie': { deps: ['jquery'] },
'jquery.event.drag': { deps: ['jquery'] },
'jquery.event.drop': {
deps: ['jquery'],
exports: '$.drop'
},
'mockup-iframe_init': { deps: ['domready'] },
'picker.date': { deps: [ 'picker' ] },
'picker.time': { deps: [ 'picker' ] },
'sinon': {exports: 'window.sinon'},
'underscore': { exports: 'window._' },
'sinon-fakexmlhttprequest': { exports: 'window.sinon', deps: [ 'sinon' ] },
'sinon-fakeserver': {
exports: 'window.sinon.fakeServer',
deps: [ 'sinon', 'sinon-fakexmlhttprequest' ]
},
'sinon-faketimers': {
exports: 'window.sinon.useFakeTimers',
deps: [ 'sinon', 'sinon-fakexmlhttprequest' ]
},
'tinymce': {
exports: 'window.tinyMCE',
init: function () {
this.tinyMCE.DOM.events.domLoaded = true;
return this.tinyMCE;
}
},
'tinymce-modern-theme': {
deps: ['tinymce']
}
},
wrapShim: true
};

for(var i=0; i<tinymcePlugins.length; i=i+1){
var plugin = tinymcePlugins[i];
requirejsOptions.paths['tinymce-' + plugin] = 'bower_components/tinymce/plugins/' + plugin + '/plugin';
requirejsOptions.shim['tinymce-' + plugin] = {
deps: ['tinymce']
};
}

if (typeof exports !== "undefined" && typeof module !== "undefined") {
module.exports = requirejsOptions;
}
if (typeof requirejs !== "undefined" && requirejs.config) {
requirejs.config(requirejsOptions);
}

}());
12 changes: 12 additions & 0 deletions mockup/dev/dev.html
@@ -0,0 +1,12 @@
<html>
<head>
<script type="text/javascript" src="../bower_components/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="dev.js"></script>
<title>Test file for thememapperbundle</title>
</head>
<body>
<p>Pattern:</p>
<div class="pat-fakepattern">
</div>
</body>
</html>
43 changes: 43 additions & 0 deletions mockup/dev/dev.js
@@ -0,0 +1,43 @@
(function($) {
"use strict";

$(document).ready(function() {

var splitted_location = document.URL.split('/');
var current_folder = splitted_location.splice(2, splitted_location.length-4).join('/');

var style1 = document.createElement('style');
style1.setAttribute('type', 'text/less');
style1.innerHTML = '\n\
@import (less) "../less/thememapperbundle.less";\n\
@isBrowser: true;\n\
@pathPrefix: \'../less/\';\n\
@bowerPath: \''+current_folder+'/bower_components\';\n\
@mockupPath: \'../bower_components/plone-mockup/patterns"\';\n\
@mockuplessPath: \'"less/"\';';
document.getElementsByTagName("head")[0].appendChild(style1);

var script_less = document.createElement('script');
script_less.setAttribute('type', 'text/javascript');
script_less.setAttribute('src', '../node_modules/less/dist/less-1.7.5.js');
document.getElementsByTagName("head")[0].appendChild(script_less);
script_less.onload = function() {
var script_require = document.createElement('script');
script_require.setAttribute('type', 'text/javascript');
script_require.setAttribute('src', '../node_modules/requirejs/require.js');
document.getElementsByTagName("head")[0].appendChild(script_require);
script_require.onload = function() {
var script_config = document.createElement('script');
script_config.setAttribute('type', 'text/javascript');
script_config.setAttribute('src', '../config.js');
document.getElementsByTagName("head")[0].appendChild(script_config);
script_config.onload = function() {
requirejs.config({ baseUrl: '../' });
require(['mockup-bundles-thememapperbundle']);
};
};
};

});

}(jQuery));