app abbozzata
This commit is contained in:
parent
7bc390aa4f
commit
82e8e83c03
17 changed files with 1175 additions and 0 deletions
398
Gruntfile-example.js
Normal file
398
Gruntfile-example.js
Normal file
|
@ -0,0 +1,398 @@
|
||||||
|
// Generated on 2015-02-03 using
|
||||||
|
// generator-webapp 0.5.1
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// # Globbing
|
||||||
|
// for performance reasons we're only matching one level down:
|
||||||
|
// 'test/spec/{,*/}*.js'
|
||||||
|
// If you want to recursively match all subfolders, use:
|
||||||
|
// 'test/spec/**/*.js'
|
||||||
|
|
||||||
|
module.exports = function (grunt) {
|
||||||
|
|
||||||
|
// Time how long tasks take. Can help when optimizing build times
|
||||||
|
require('time-grunt')(grunt);
|
||||||
|
|
||||||
|
// Load grunt tasks automatically
|
||||||
|
require('load-grunt-tasks')(grunt);
|
||||||
|
|
||||||
|
// Configurable paths
|
||||||
|
var config = {
|
||||||
|
app: 'app',
|
||||||
|
dist: 'dist'
|
||||||
|
};
|
||||||
|
|
||||||
|
// Define the configuration for all the tasks
|
||||||
|
grunt.initConfig({
|
||||||
|
|
||||||
|
// Project settings
|
||||||
|
config: config,
|
||||||
|
|
||||||
|
// Watches files for changes and runs tasks based on the changed files
|
||||||
|
watch: {
|
||||||
|
bower: {
|
||||||
|
files: ['bower.json'],
|
||||||
|
tasks: ['wiredep']
|
||||||
|
},
|
||||||
|
js: {
|
||||||
|
files: ['<%= config.app %>/scripts/{,*/}*.js'],
|
||||||
|
tasks: ['jshint'],
|
||||||
|
options: {
|
||||||
|
livereload: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
jstest: {
|
||||||
|
files: ['test/spec/{,*/}*.js'],
|
||||||
|
tasks: ['test:watch']
|
||||||
|
},
|
||||||
|
gruntfile: {
|
||||||
|
files: ['Gruntfile.js']
|
||||||
|
},
|
||||||
|
styles: {
|
||||||
|
files: ['<%= config.app %>/styles/{,*/}*.css'],
|
||||||
|
tasks: ['newer:copy:styles', 'autoprefixer']
|
||||||
|
},
|
||||||
|
livereload: {
|
||||||
|
options: {
|
||||||
|
livereload: '<%= connect.options.livereload %>'
|
||||||
|
},
|
||||||
|
files: [
|
||||||
|
'<%= config.app %>/{,*/}*.html',
|
||||||
|
'.tmp/styles/{,*/}*.css',
|
||||||
|
'<%= config.app %>/assets/{,*/}*'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// The actual grunt server settings
|
||||||
|
connect: {
|
||||||
|
options: {
|
||||||
|
port: 8090,
|
||||||
|
open: true,
|
||||||
|
livereload: 35729,
|
||||||
|
// Change this to '0.0.0.0' to access the server from outside
|
||||||
|
hostname: 'localhost'
|
||||||
|
},
|
||||||
|
livereload: {
|
||||||
|
options: {
|
||||||
|
middleware: function(connect) {
|
||||||
|
return [
|
||||||
|
connect.static('.tmp'),
|
||||||
|
connect().use('/bower_components', connect.static('./bower_components')),
|
||||||
|
connect.static(config.app)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
test: {
|
||||||
|
options: {
|
||||||
|
open: false,
|
||||||
|
port: 9001,
|
||||||
|
middleware: function(connect) {
|
||||||
|
return [
|
||||||
|
connect.static('.tmp'),
|
||||||
|
connect.static('test'),
|
||||||
|
connect().use('/bower_components', connect.static('./bower_components')),
|
||||||
|
connect.static(config.app)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dist: {
|
||||||
|
options: {
|
||||||
|
base: '<%= config.dist %>',
|
||||||
|
livereload: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Empties folders to start fresh
|
||||||
|
clean: {
|
||||||
|
dist: {
|
||||||
|
files: [{
|
||||||
|
dot: true,
|
||||||
|
src: [
|
||||||
|
'.tmp',
|
||||||
|
'<%= config.dist %>/*',
|
||||||
|
'!<%= config.dist %>/.git*'
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
server: '.tmp'
|
||||||
|
},
|
||||||
|
|
||||||
|
// Make sure code styles are up to par and there are no obvious mistakes
|
||||||
|
jshint: {
|
||||||
|
options: {
|
||||||
|
jshintrc: '.jshintrc',
|
||||||
|
reporter: require('jshint-stylish')
|
||||||
|
},
|
||||||
|
all: [
|
||||||
|
'Gruntfile.js',
|
||||||
|
'<%= config.app %>/scripts/{,*/}*.js',
|
||||||
|
'!<%= config.app %>/scripts/vendor/*',
|
||||||
|
'test/spec/{,*/}*.js'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
// Add vendor prefixed styles
|
||||||
|
autoprefixer: {
|
||||||
|
options: {
|
||||||
|
browsers: ['> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1']
|
||||||
|
},
|
||||||
|
dist: {
|
||||||
|
files: [{
|
||||||
|
expand: true,
|
||||||
|
cwd: '.tmp/styles/',
|
||||||
|
src: '{,*/}*.css',
|
||||||
|
dest: '.tmp/styles/'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Automatically inject Bower components into the HTML file
|
||||||
|
wiredep: {
|
||||||
|
app: {
|
||||||
|
ignorePath: /^\/|\.\.\//,
|
||||||
|
src: ['<%= config.app %>/index.html'],
|
||||||
|
exclude: ['bower_components/bootstrap/dist/js/bootstrap.js']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Renames files for browser caching purposes
|
||||||
|
rev: {
|
||||||
|
dist: {
|
||||||
|
files: {
|
||||||
|
src: [
|
||||||
|
'<%= config.dist %>/scripts/{,*/}*.js',
|
||||||
|
'<%= config.dist %>/styles/{,*/}*.css',
|
||||||
|
'<%= config.dist %>/assets/{,*/}*.*',
|
||||||
|
'<%= config.dist %>/styles/fonts/{,*/}*.*',
|
||||||
|
'<%= config.dist %>/*.{ico,png}'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Reads HTML for usemin blocks to enable smart builds that automatically
|
||||||
|
// concat, minify and revision files. Creates configurations in memory so
|
||||||
|
// additional tasks can operate on them
|
||||||
|
useminPrepare: {
|
||||||
|
options: {
|
||||||
|
dest: '<%= config.dist %>'
|
||||||
|
},
|
||||||
|
html: '<%= config.app %>/index.html'
|
||||||
|
},
|
||||||
|
|
||||||
|
// Performs rewrites based on rev and the useminPrepare configuration
|
||||||
|
usemin: {
|
||||||
|
options: {
|
||||||
|
assetsDirs: [
|
||||||
|
'<%= config.dist %>',
|
||||||
|
'<%= config.dist %>/assets',
|
||||||
|
'<%= config.dist %>/styles'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
html: ['<%= config.dist %>/{,*/}*.html'],
|
||||||
|
css: ['<%= config.dist %>/styles/{,*/}*.css']
|
||||||
|
},
|
||||||
|
|
||||||
|
// The following *-min tasks produce minified files in the dist folder
|
||||||
|
imagemin: {
|
||||||
|
dist: {
|
||||||
|
files: [{
|
||||||
|
expand: true,
|
||||||
|
cwd: '<%= config.app %>/assets',
|
||||||
|
src: '{,*/}*.{gif,jpeg,jpg,png}',
|
||||||
|
dest: '<%= config.dist %>/assets'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
svgmin: {
|
||||||
|
dist: {
|
||||||
|
files: [{
|
||||||
|
expand: true,
|
||||||
|
cwd: '<%= config.app %>/assets',
|
||||||
|
src: '{,*/}*.svg',
|
||||||
|
dest: '<%= config.dist %>/assets'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
htmlmin: {
|
||||||
|
dist: {
|
||||||
|
options: {
|
||||||
|
collapseBooleanAttributes: true,
|
||||||
|
collapseWhitespace: true,
|
||||||
|
conservativeCollapse: true,
|
||||||
|
removeAttributeQuotes: true,
|
||||||
|
removeCommentsFromCDATA: true,
|
||||||
|
removeEmptyAttributes: true,
|
||||||
|
removeOptionalTags: true,
|
||||||
|
removeRedundantAttributes: true,
|
||||||
|
useShortDoctype: true
|
||||||
|
},
|
||||||
|
files: [{
|
||||||
|
expand: true,
|
||||||
|
cwd: '<%= config.dist %>',
|
||||||
|
src: '{,*/}*.html',
|
||||||
|
dest: '<%= config.dist %>'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// By default, your `index.html`'s <!-- Usemin block --> will take care
|
||||||
|
// of minification. These next options are pre-configured if you do not
|
||||||
|
// wish to use the Usemin blocks.
|
||||||
|
// cssmin: {
|
||||||
|
// dist: {
|
||||||
|
// files: {
|
||||||
|
// '<%= config.dist %>/styles/main.css': [
|
||||||
|
// '.tmp/styles/{,*/}*.css',
|
||||||
|
// '<%= config.app %>/styles/{,*/}*.css'
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// uglify: {
|
||||||
|
// dist: {
|
||||||
|
// files: {
|
||||||
|
// '<%= config.dist %>/scripts/scripts.js': [
|
||||||
|
// '<%= config.dist %>/scripts/scripts.js'
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// concat: {
|
||||||
|
// dist: {}
|
||||||
|
// },
|
||||||
|
|
||||||
|
// Copies remaining files to places other tasks can use
|
||||||
|
copy: {
|
||||||
|
dist: {
|
||||||
|
files: [{
|
||||||
|
expand: true,
|
||||||
|
dot: true,
|
||||||
|
cwd: '<%= config.app %>',
|
||||||
|
dest: '<%= config.dist %>',
|
||||||
|
src: [
|
||||||
|
'*.{ico,png,txt}',
|
||||||
|
'assets/{,*/}*.webp',
|
||||||
|
'{,*/}*.html',
|
||||||
|
'styles/fonts/{,*/}*.*'
|
||||||
|
]
|
||||||
|
}, {
|
||||||
|
src: 'node_modules/apache-server-configs/dist/.htaccess',
|
||||||
|
dest: '<%= config.dist %>/.htaccess'
|
||||||
|
}, {
|
||||||
|
expand: true,
|
||||||
|
dot: true,
|
||||||
|
cwd: 'bower_components/bootstrap/dist',
|
||||||
|
src: 'fonts/*',
|
||||||
|
dest: '<%= config.dist %>'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
styles: {
|
||||||
|
expand: true,
|
||||||
|
dot: true,
|
||||||
|
cwd: '<%= config.app %>/styles',
|
||||||
|
dest: '.tmp/styles/',
|
||||||
|
src: '{,*/}*.css'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Generates a custom Modernizr build that includes only the tests you
|
||||||
|
// reference in your app
|
||||||
|
modernizr: {
|
||||||
|
dist: {
|
||||||
|
devFile: 'bower_components/modernizr/modernizr.js',
|
||||||
|
outputFile: '<%= config.dist %>/scripts/vendor/modernizr.js',
|
||||||
|
files: {
|
||||||
|
src: [
|
||||||
|
'<%= config.dist %>/scripts/{,*/}*.js',
|
||||||
|
'<%= config.dist %>/styles/{,*/}*.css',
|
||||||
|
'!<%= config.dist %>/scripts/vendor/*'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
uglify: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Run some tasks in parallel to speed up build process
|
||||||
|
concurrent: {
|
||||||
|
server: [
|
||||||
|
'copy:styles'
|
||||||
|
],
|
||||||
|
test: [
|
||||||
|
'copy:styles'
|
||||||
|
],
|
||||||
|
dist: [
|
||||||
|
'copy:styles',
|
||||||
|
'imagemin',
|
||||||
|
'svgmin'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
grunt.registerTask('serve', 'start the server and preview your app, --allow-remote for remote access', function (target) {
|
||||||
|
if (grunt.option('allow-remote')) {
|
||||||
|
grunt.config.set('connect.options.hostname', '0.0.0.0');
|
||||||
|
}
|
||||||
|
if (target === 'dist') {
|
||||||
|
return grunt.task.run(['build', 'connect:dist:keepalive']);
|
||||||
|
}
|
||||||
|
|
||||||
|
grunt.task.run([
|
||||||
|
'clean:server',
|
||||||
|
'wiredep',
|
||||||
|
'concurrent:server',
|
||||||
|
'autoprefixer',
|
||||||
|
'connect:livereload',
|
||||||
|
'watch'
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
grunt.registerTask('server', function (target) {
|
||||||
|
grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.');
|
||||||
|
grunt.task.run([target ? ('serve:' + target) : 'serve']);
|
||||||
|
});
|
||||||
|
|
||||||
|
grunt.registerTask('test', function (target) {
|
||||||
|
if (target !== 'watch') {
|
||||||
|
grunt.task.run([
|
||||||
|
'clean:server',
|
||||||
|
'concurrent:test',
|
||||||
|
'autoprefixer'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
grunt.task.run([
|
||||||
|
'connect:test',
|
||||||
|
'mocha'
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
grunt.registerTask('build', [
|
||||||
|
'clean:dist',
|
||||||
|
'wiredep',
|
||||||
|
'useminPrepare',
|
||||||
|
'concurrent:dist',
|
||||||
|
'autoprefixer',
|
||||||
|
'concat',
|
||||||
|
'cssmin',
|
||||||
|
'uglify',
|
||||||
|
'copy:dist',
|
||||||
|
'modernizr',
|
||||||
|
'rev',
|
||||||
|
'usemin',
|
||||||
|
'htmlmin'
|
||||||
|
]);
|
||||||
|
|
||||||
|
grunt.registerTask('default', [
|
||||||
|
'newer:jshint',
|
||||||
|
'test',
|
||||||
|
'build'
|
||||||
|
]);
|
||||||
|
};
|
241
Gruntfile.js
Normal file
241
Gruntfile.js
Normal file
|
@ -0,0 +1,241 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/*global module:false*/
|
||||||
|
module.exports = function (grunt) {
|
||||||
|
// Time how long tasks take. Can help when optimizing build times
|
||||||
|
require('time-grunt')(grunt);
|
||||||
|
|
||||||
|
// Configurable paths
|
||||||
|
var config = {
|
||||||
|
app: 'app',
|
||||||
|
dist: 'dist'
|
||||||
|
};
|
||||||
|
|
||||||
|
// Project configuration.
|
||||||
|
grunt.initConfig({
|
||||||
|
// Project settings
|
||||||
|
config: config,
|
||||||
|
|
||||||
|
// Metadata.
|
||||||
|
pkg: grunt.file.readJSON('package.json'),
|
||||||
|
|
||||||
|
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
|
||||||
|
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
||||||
|
'<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
|
||||||
|
'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
|
||||||
|
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n',
|
||||||
|
|
||||||
|
// Task configuration.
|
||||||
|
concat: {
|
||||||
|
options: {
|
||||||
|
banner: '<%= banner %>',
|
||||||
|
stripBanners: true
|
||||||
|
},
|
||||||
|
dist: {
|
||||||
|
src: ['<%= config.app %>/lib/<%= pkg.name %>.js'],
|
||||||
|
dest: 'dist/<%= pkg.name %>.js'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
uglify: {
|
||||||
|
options: {
|
||||||
|
banner: '<%= banner %>'
|
||||||
|
},
|
||||||
|
dist: {
|
||||||
|
src: '<%= concat.dist.dest %>',
|
||||||
|
dest: 'dist/<%= pkg.name %>.min.js'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
jshint: {
|
||||||
|
options: {
|
||||||
|
curly: true,
|
||||||
|
eqeqeq: true,
|
||||||
|
immed: true,
|
||||||
|
latedef: true,
|
||||||
|
newcap: true,
|
||||||
|
noarg: true,
|
||||||
|
sub: true,
|
||||||
|
undef: true,
|
||||||
|
unused: true,
|
||||||
|
boss: true,
|
||||||
|
eqnull: true,
|
||||||
|
browser: true,
|
||||||
|
globals: {
|
||||||
|
jQuery: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
gruntfile: {
|
||||||
|
src: 'Gruntfile.js'
|
||||||
|
},
|
||||||
|
lib_test: {
|
||||||
|
src: ['<%= config.app %>/lib/**/*.js', 'test/**/*.js']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
bower: {
|
||||||
|
files: ['bower.json'],
|
||||||
|
tasks: ['wiredep']
|
||||||
|
},
|
||||||
|
js: {
|
||||||
|
files: ['<%= config.app %>/scripts/{,*/}*.js'],
|
||||||
|
tasks: ['jshint'],
|
||||||
|
options: {
|
||||||
|
livereload: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
styles: {
|
||||||
|
files: ['<%= config.app %>/styles/{,*/}*.css'],
|
||||||
|
tasks: ['newer:copy:styles', 'autoprefixer']
|
||||||
|
},
|
||||||
|
livereload: {
|
||||||
|
options: {
|
||||||
|
livereload: '<%= connect.options.livereload %>'
|
||||||
|
},
|
||||||
|
files: [
|
||||||
|
'<%= config.app %>/{,*/}*.html',
|
||||||
|
'.tmp/styles/{,*/}*.css',
|
||||||
|
'<%= config.app %>/img/{,*/}*'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
gruntfile: {
|
||||||
|
files: '<%= jshint.gruntfile.src %>',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
clean: {
|
||||||
|
dist: {
|
||||||
|
files: [{
|
||||||
|
dot: true,
|
||||||
|
src: [
|
||||||
|
'.tmp',
|
||||||
|
'<%= config.dist %>/*'
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
server: '.tmp'
|
||||||
|
},
|
||||||
|
|
||||||
|
// Automatically inject Bower components into the HTML file
|
||||||
|
wiredep: {
|
||||||
|
app: {
|
||||||
|
ignorePath: /^\/|\.\.\//,
|
||||||
|
src: ['<%= config.app %>/index.html'],
|
||||||
|
/*exclude: ['bower_components/bootstrap/dist/js/bootstrap.js']*/
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Run some tasks in parallel to speed up build process
|
||||||
|
concurrent: {
|
||||||
|
server: [
|
||||||
|
'copy:styles'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
// Add vendor prefixed styles
|
||||||
|
autoprefixer: {
|
||||||
|
options: {
|
||||||
|
browsers: ['> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1']
|
||||||
|
},
|
||||||
|
dist: {
|
||||||
|
files: [{
|
||||||
|
expand: true,
|
||||||
|
cwd: '.tmp/styles/',
|
||||||
|
src: '{,*/}*.css',
|
||||||
|
dest: '.tmp/styles/'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// The actual grunt server settings
|
||||||
|
connect: {
|
||||||
|
options: {
|
||||||
|
port: 8090,
|
||||||
|
open: true,
|
||||||
|
livereload: 35729,
|
||||||
|
// Change this to '0.0.0.0' to access the server from outside
|
||||||
|
hostname: 'localhost'
|
||||||
|
},
|
||||||
|
livereload: {
|
||||||
|
options: {
|
||||||
|
middleware: function (connect) {
|
||||||
|
return [
|
||||||
|
connect.static('.tmp'),
|
||||||
|
connect().use('/bower_components', connect.static('./bower_components')),
|
||||||
|
connect.static(config.app)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dist: {
|
||||||
|
options: {
|
||||||
|
base: '<%= config.dist %>',
|
||||||
|
livereload: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Copies remaining files to places other tasks can use
|
||||||
|
copy: {
|
||||||
|
dist: {
|
||||||
|
files: [{
|
||||||
|
expand: true,
|
||||||
|
dot: true,
|
||||||
|
cwd: '<%= config.app %>',
|
||||||
|
dest: '<%= config.dist %>',
|
||||||
|
src: [
|
||||||
|
'*.{ico,png,txt}',
|
||||||
|
'{,*/}*.html',
|
||||||
|
'fonts/{,*/}*.*'
|
||||||
|
]
|
||||||
|
}, {
|
||||||
|
src: '<%= config.app %>/.htaccess',
|
||||||
|
dest: '<%= config.dist %>/.htaccess'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
styles: {
|
||||||
|
expand: true,
|
||||||
|
dot: true,
|
||||||
|
cwd: '<%= config.app %>/styles',
|
||||||
|
dest: '.tmp/styles/',
|
||||||
|
src: '{,*/}*.css'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// These plugins provide necessary tasks.
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-concat');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-uglify');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-jshint');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-clean');
|
||||||
|
grunt.loadNpmTasks('grunt-wiredep');
|
||||||
|
grunt.loadNpmTasks('grunt-concurrent');
|
||||||
|
grunt.loadNpmTasks('grunt-autoprefixer');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-connect');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-copy');
|
||||||
|
grunt.loadNpmTasks('grunt-newer');
|
||||||
|
|
||||||
|
// Default task.
|
||||||
|
//grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
|
||||||
|
|
||||||
|
grunt.registerTask('serve', 'start the server and preview your app, --allow-remote for remote access', function (target) {
|
||||||
|
if (grunt.option('allow-remote')) {
|
||||||
|
grunt.config.set('connect.options.hostname', '0.0.0.0');
|
||||||
|
}
|
||||||
|
/*if (target === 'dist') {
|
||||||
|
return grunt.task.run(['build', 'connect:dist:keepalive']);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
grunt.task.run([
|
||||||
|
'clean:server',
|
||||||
|
'wiredep',
|
||||||
|
'concurrent:server',
|
||||||
|
'autoprefixer',
|
||||||
|
'connect:livereload',
|
||||||
|
'watch'
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
12
app/browserconfig.xml
Normal file
12
app/browserconfig.xml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Please read: http://msdn.microsoft.com/en-us/library/ie/dn455106.aspx -->
|
||||||
|
<browserconfig>
|
||||||
|
<msapplication>
|
||||||
|
<tile>
|
||||||
|
<square70x70logo src="tile.png"/>
|
||||||
|
<square150x150logo src="tile.png"/>
|
||||||
|
<wide310x150logo src="tile-wide.png"/>
|
||||||
|
<square310x310logo src="tile.png"/>
|
||||||
|
</tile>
|
||||||
|
</msapplication>
|
||||||
|
</browserconfig>
|
15
app/crossdomain.xml
Normal file
15
app/crossdomain.xml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
|
||||||
|
<cross-domain-policy>
|
||||||
|
<!-- Read this: https://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
|
||||||
|
|
||||||
|
<!-- Most restrictive policy: -->
|
||||||
|
<site-control permitted-cross-domain-policies="none"/>
|
||||||
|
|
||||||
|
<!-- Least restrictive policy: -->
|
||||||
|
<!--
|
||||||
|
<site-control permitted-cross-domain-policies="all"/>
|
||||||
|
<allow-access-from domain="*" to-ports="*" secure="false"/>
|
||||||
|
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
|
||||||
|
-->
|
||||||
|
</cross-domain-policy>
|
15
app/humans.txt
Normal file
15
app/humans.txt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# humanstxt.org/
|
||||||
|
# The humans responsible & technology colophon
|
||||||
|
|
||||||
|
# TEAM
|
||||||
|
|
||||||
|
<name> -- <role> -- <twitter>
|
||||||
|
|
||||||
|
# THANKS
|
||||||
|
|
||||||
|
<name>
|
||||||
|
|
||||||
|
# TECHNOLOGY COLOPHON
|
||||||
|
|
||||||
|
HTML5, CSS3
|
||||||
|
Normalize.css, jQuery, Modernizr
|
63
app/index.html
Normal file
63
app/index.html
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
<!doctype html>
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<html class = "no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||||
|
<!--[if IE 7]>
|
||||||
|
<html class = "no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||||
|
<!--[if IE 8]>
|
||||||
|
<html class = "no-js lt-ie9"> <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!-->
|
||||||
|
<html class="no-js">
|
||||||
|
<!--<![endif]-->
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<title>arkiwiJsBoilerplate</title>
|
||||||
|
<meta name="description" content="Arkiwi JS Boilerplate">
|
||||||
|
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
|
||||||
|
<!-- build:css styles/vendor.css -->
|
||||||
|
<!-- bower:css -->
|
||||||
|
<!-- endbower -->
|
||||||
|
<!-- endbuild -->
|
||||||
|
<!-- build:css(.tmp) styles/main.css -->
|
||||||
|
<link rel="stylesheet" href="styles/main.css">
|
||||||
|
<!-- endbuild -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Latest compiled and minified CSS -->
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
|
||||||
|
|
||||||
|
<!-- Optional theme -->
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
|
||||||
|
|
||||||
|
<!-- Latest compiled and minified JavaScript -->
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!--[if lt IE 10]>
|
||||||
|
<p class = "browsehappy">You are using an <strong>outdated</strong> browser. Please
|
||||||
|
<a href = "http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<header>
|
||||||
|
<h1>App Generated <small>with the html5 app generator</small></h1>
|
||||||
|
<p>Now go develop</p>
|
||||||
|
</header>
|
||||||
|
</div>
|
||||||
|
<!-- build:js scripts/vendor.js -->
|
||||||
|
<!-- bower:js -->
|
||||||
|
<script src="bower_components/jquery/dist/jquery.js"></script>
|
||||||
|
<script src="bower_components/mustache/mustache.js"></script>
|
||||||
|
<script src="bower_components/bower-parseuri/parseuri.js"></script>
|
||||||
|
<!-- endbower -->
|
||||||
|
<!-- endbuild -->
|
||||||
|
|
||||||
|
<script src="scripts/arkiwi.js"></script>
|
||||||
|
<script src="scripts/main.js"></script>
|
||||||
|
</body>
|
||||||
|
<div class="container-fluid" id="list" ><div class="row"></div></div>
|
||||||
|
</html>
|
62
app/index.html~
Normal file
62
app/index.html~
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
<!doctype html>
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<html class = "no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||||
|
<!--[if IE 7]>
|
||||||
|
<html class = "no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||||
|
<!--[if IE 8]>
|
||||||
|
<html class = "no-js lt-ie9"> <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!-->
|
||||||
|
<html class="no-js">
|
||||||
|
<!--<![endif]-->
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<title>arkiwiJsBoilerplate</title>
|
||||||
|
<meta name="description" content="Arkiwi JS Boilerplate">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
|
||||||
|
<!-- build:css styles/vendor.css -->
|
||||||
|
<!-- bower:css -->
|
||||||
|
<!-- endbower -->
|
||||||
|
<!-- endbuild -->
|
||||||
|
<!-- build:css(.tmp) styles/main.css -->
|
||||||
|
<link rel="stylesheet" href="styles/main.css">
|
||||||
|
<!-- endbuild -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Latest compiled and minified CSS -->
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
|
||||||
|
|
||||||
|
<!-- Optional theme -->
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
|
||||||
|
|
||||||
|
<!-- Latest compiled and minified JavaScript -->
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!--[if lt IE 10]>
|
||||||
|
<p class = "browsehappy">You are using an <strong>outdated</strong> browser. Please
|
||||||
|
<a href = "http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<header>
|
||||||
|
<h1>App Generated <small>with the html5 app generator</small></h1>
|
||||||
|
<p>Now go develop</p>
|
||||||
|
</header>
|
||||||
|
</div>
|
||||||
|
<!-- build:js scripts/vendor.js -->
|
||||||
|
<!-- bower:js -->
|
||||||
|
<script src="bower_components/jquery/dist/jquery.js"></script>
|
||||||
|
<script src="bower_components/mustache/mustache.js"></script>
|
||||||
|
<script src="bower_components/bower-parseuri/parseuri.js"></script>
|
||||||
|
<!-- endbower -->
|
||||||
|
<!-- endbuild -->
|
||||||
|
|
||||||
|
<script src="scripts/arkiwi.js"></script>
|
||||||
|
<script src="scripts/main.js"></script>
|
||||||
|
</body>
|
||||||
|
<div class="container-fluid" id="list" ><div class="row"></div></div>
|
||||||
|
</html>
|
3
app/robots.txt
Normal file
3
app/robots.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# robotstxt.org/
|
||||||
|
|
||||||
|
User-agent: *
|
174
app/scripts/arkiwi.js
Normal file
174
app/scripts/arkiwi.js
Normal file
|
@ -0,0 +1,174 @@
|
||||||
|
/*------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@package: arkiwiJsBoilerplate
|
||||||
|
|
||||||
|
@author: cek
|
||||||
|
@www: arkiwi.oeg
|
||||||
|
|
||||||
|
@copyright: COPYRIGHT 18 cek
|
||||||
|
@license: MIT
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
Filename: arkiwi.js
|
||||||
|
=============================================================================
|
||||||
|
This file is the main entry point for js on the arkiwiJsBoilerplate app.
|
||||||
|
--------------------------------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
var ARKIWI = ARKIWI || {};
|
||||||
|
|
||||||
|
ARKIWI.Arkiwi = function (endpoint, defaultParameters, formName, sessionUploadProgressName) {
|
||||||
|
this.endpoint = endpoint;
|
||||||
|
this.defaultParameters = defaultParameters || '';
|
||||||
|
this.formName = formName || 'arkiwiUploadForm';
|
||||||
|
this.sessionUploadProgressName = sessionUploadProgressName || 'PHP_SESSION_UPLOAD_PROGRESS';
|
||||||
|
|
||||||
|
this.sessionId = '';
|
||||||
|
|
||||||
|
if ($('#arkiwi_hidden_iframe').length == 0)
|
||||||
|
$(document.body).append('<iframe id="arkiwi_hidden_iframe" name="arkiwi_hidden_iframe" src="about:blank" style="display: none;"></iframe>');
|
||||||
|
};
|
||||||
|
|
||||||
|
ARKIWI.Arkiwi.constructor = ARKIWI.Arkiwi;
|
||||||
|
|
||||||
|
ARKIWI.Arkiwi.prototype.create = function (callbacks) {
|
||||||
|
$.ajax({
|
||||||
|
url: this.endpoint + '/create/?' + this.defaultParameters,
|
||||||
|
type: 'GET',
|
||||||
|
async: false,
|
||||||
|
cache: false,
|
||||||
|
context: this,
|
||||||
|
data: '',
|
||||||
|
dataType: 'json',
|
||||||
|
error: function (xhr, status, error) {
|
||||||
|
if (error != 'Unauthorized')
|
||||||
|
throw 'Arkiwi.create(): error ' + error;
|
||||||
|
else {
|
||||||
|
if (callbacks != undefined && callbacks.unauthorized != undefined)
|
||||||
|
callbacks.unauthorized();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
success: function (result, status, xhr) {
|
||||||
|
this.sessionId = result.id;
|
||||||
|
if (callbacks != undefined && callbacks.success != undefined)
|
||||||
|
callbacks.success(this.sessionId);
|
||||||
|
},
|
||||||
|
complete: function (xhr, status) {},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
ARKIWI.Arkiwi.prototype.upload = function (form, destinationFolderBase64, callbacks) {
|
||||||
|
form = $(form);
|
||||||
|
|
||||||
|
form.attr('method', 'POST');
|
||||||
|
form.attr('action', this.endpoint + '/upload/' + this.sessionId + '/' + destinationFolderBase64 + '/?' + this.defaultParameters);
|
||||||
|
form.attr('id', this.formName);
|
||||||
|
form.attr('enctype', 'multipart/form-data');
|
||||||
|
form.attr('target', 'arkiwi_hidden_iframe');
|
||||||
|
|
||||||
|
form.append('<input type="hidden" value="' + this.formName + '" name="' + this.sessionUploadProgressName + '" />');
|
||||||
|
|
||||||
|
$(':file', form).attr('name', this.sessionId);
|
||||||
|
|
||||||
|
form.ajaxForm({
|
||||||
|
beforeSend: function () {
|
||||||
|
callbacks.beforeSend();
|
||||||
|
},
|
||||||
|
uploadProgress: function (event, position, total, percentComplete) {
|
||||||
|
callbacks.uploadProgress(event, position, total, percentComplete);
|
||||||
|
},
|
||||||
|
complete: function (xhr) {
|
||||||
|
callbacks.complete(xhr);
|
||||||
|
},
|
||||||
|
error: function (xhr, status, error) {
|
||||||
|
throw 'Arkiwi.upload(): error ' + error;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
form.submit();
|
||||||
|
};
|
||||||
|
|
||||||
|
ARKIWI.Arkiwi.prototype.metadata = function (jsonKVString, callback) {
|
||||||
|
$.ajax({
|
||||||
|
url: this.endpoint + '/metadata/' + this.sessionId + '/?' + this.defaultParameters,
|
||||||
|
type: 'POST',
|
||||||
|
async: true,
|
||||||
|
cache: false,
|
||||||
|
context: this,
|
||||||
|
data: jsonKVString,
|
||||||
|
dataType: 'json',
|
||||||
|
error: function (xhr, status, error) {
|
||||||
|
throw 'Arkiwi.metadata(): status ' + status + ' error ' + error;
|
||||||
|
},
|
||||||
|
success: function (result, status, xhr) {
|
||||||
|
if (callback != undefined)
|
||||||
|
callback(result);
|
||||||
|
},
|
||||||
|
complete: function (xhr, status) {}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
ARKIWI.Arkiwi.prototype.removeMetadata = function (jsonKVString, callback) {
|
||||||
|
$.ajax({
|
||||||
|
url: this.endpoint + '/removemetadata/' + this.sessionId + '/?' + this.defaultParameters,
|
||||||
|
type: 'POST',
|
||||||
|
async: true,
|
||||||
|
cache: false,
|
||||||
|
context: this,
|
||||||
|
data: jsonKVString,
|
||||||
|
dataType: 'json',
|
||||||
|
error: function (xhr, status, error) {
|
||||||
|
throw 'Arkiwi.removeMetadata(): status ' + status + ' error ' + error;
|
||||||
|
},
|
||||||
|
success: function (result, status, xhr) {
|
||||||
|
if (callback != undefined)
|
||||||
|
callback(result);
|
||||||
|
},
|
||||||
|
complete: function (xhr, status) {}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
ARKIWI.Arkiwi.prototype.close = function (callback) {
|
||||||
|
$.ajax({
|
||||||
|
url: this.endpoint + '/close/' + this.sessionId + '/?' + this.defaultParameters,
|
||||||
|
type: 'GET',
|
||||||
|
async: true,
|
||||||
|
cache: false,
|
||||||
|
context: this,
|
||||||
|
data: '',
|
||||||
|
dataType: 'json',
|
||||||
|
error: function (xhr, status, error) {
|
||||||
|
throw 'Arkiwi.close(): status ' + status + ' error ' + error;
|
||||||
|
},
|
||||||
|
success: function (result, status, xhr) {
|
||||||
|
if (callback != undefined)
|
||||||
|
callback(result);
|
||||||
|
},
|
||||||
|
complete: function (xhr, status) {}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
ARKIWI.Arkiwi.prototype.path = function (path, callback, notBase64) {
|
||||||
|
var pathType = notBase64 ? 'path' : 'path64';
|
||||||
|
|
||||||
|
$.getJSON(this.endpoint + '/' + pathType + '/' + path + '/jsonml/?' + this.defaultParameters, function (result) {
|
||||||
|
if (callback != undefined)
|
||||||
|
callback(result);
|
||||||
|
}).fail(function (error) {
|
||||||
|
throw 'Arkiwi.path(): status ' + status + ' error ' + error.responseText;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
ARKIWI.Arkiwi.prototype.search = function (query, callback, jailFolder) {
|
||||||
|
var sanitizedQuery = query;
|
||||||
|
if (jailFolder) {
|
||||||
|
sanitizedQuery = '+file:' + jailFolder + '* AND ' + query;
|
||||||
|
}
|
||||||
|
|
||||||
|
sanitizedQuery = window.btoa(sanitizedQuery); //convert to Base64
|
||||||
|
|
||||||
|
$.getJSON(this.endpoint + '/search64/' + sanitizedQuery + '/jsonml/?' + this.defaultParameters, function (result) {
|
||||||
|
if (callback != undefined)
|
||||||
|
callback(result);
|
||||||
|
}).fail(function (error) {
|
||||||
|
throw 'Arkiwi.search(): status ' + status + ' error ' + error.responseText;
|
||||||
|
});
|
||||||
|
};
|
34
app/scripts/main.js
Normal file
34
app/scripts/main.js
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/*------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@package: arkiwiJsBoilerplate
|
||||||
|
|
||||||
|
@author: cek
|
||||||
|
@www: arkiwi.oeg
|
||||||
|
|
||||||
|
@copyright: COPYRIGHT 18 cek
|
||||||
|
@license: MIT
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
Filename: main.js
|
||||||
|
=============================================================================
|
||||||
|
This file is the main entry point for js on the arkiwiJsBoilerplate app.
|
||||||
|
--------------------------------------------------------------------------------------------------------------------- */
|
||||||
|
$(document).ready(function () {
|
||||||
|
var arkiwi = new ARKIWI.Arkiwi('http://www.arkiwi.org');
|
||||||
|
$.get("templates/list.txt", function (template) {
|
||||||
|
|
||||||
|
arkiwi.path("XM24", function (listone) {
|
||||||
|
var dioporco = Mustache.render(template, listone);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var arkiwi = new ARKIWI.Arkiwi('http://www.arkiwi.org');
|
||||||
|
arkiwi.search('Ampioraggio', function (result) {
|
||||||
|
console.log('Ricerca...');
|
||||||
|
console.log(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
arkiwi.path('XM24', function (result) {
|
||||||
|
console.log('Lettura cartella...');
|
||||||
|
console.log(result);
|
||||||
|
}, true);
|
||||||
|
});
|
34
app/scripts/main.js~
Normal file
34
app/scripts/main.js~
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/*------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@package: arkiwiJsBoilerplate
|
||||||
|
|
||||||
|
@author: cek
|
||||||
|
@www: arkiwi.oeg
|
||||||
|
|
||||||
|
@copyright: COPYRIGHT 18 cek
|
||||||
|
@license: MIT
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
Filename: main.js
|
||||||
|
=============================================================================
|
||||||
|
This file is the main entry point for js on the arkiwiJsBoilerplate app.
|
||||||
|
--------------------------------------------------------------------------------------------------------------------- */
|
||||||
|
$(document).ready(function () {
|
||||||
|
var arkiwi = new ARKIWI.Arkiwi('http://www.arkiwi.org');
|
||||||
|
$.get("./templates/list.txt", function (template) {
|
||||||
|
|
||||||
|
arkiwi.path("XM24", function (listone) {
|
||||||
|
var dioporco = Mustache.render(template, listone);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var arkiwi = new ARKIWI.Arkiwi('http://www.arkiwi.org');
|
||||||
|
arkiwi.search('Ampioraggio', function (result) {
|
||||||
|
console.log('Ricerca...');
|
||||||
|
console.log(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
arkiwi.path('XM24', function (result) {
|
||||||
|
console.log('Lettura cartella...');
|
||||||
|
console.log(result);
|
||||||
|
}, true);
|
||||||
|
});
|
14
app/styles/main.css
Normal file
14
app/styles/main.css
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
/*------------------------------------------------------------------------------------------------------------------------
|
||||||
|
@package: arkiwiJsBoilerplate
|
||||||
|
|
||||||
|
@author: cek
|
||||||
|
@www: arkiwi.oeg
|
||||||
|
|
||||||
|
@copyright: COPYRIGHT 18 cek
|
||||||
|
@license: MIT
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
Filename: main.css
|
||||||
|
=============================================================================
|
||||||
|
This file is responsible for all styles on the arkiwiJsBoilerplate app.
|
||||||
|
--------------------------------------------------------------------------------------------------------------------- */
|
22
app/templates/copia di list.txt
Normal file
22
app/templates/copia di list.txt
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<ul>{{#items}}
|
||||||
|
<li>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-6 col-md-4">
|
||||||
|
<div class="thumbnail">
|
||||||
|
<img src="..." alt="...">
|
||||||
|
<div class="caption">
|
||||||
|
<h3>Thumbnail label</h3>
|
||||||
|
<p>...</p>
|
||||||
|
<p><a href="#" class="btn btn-primary" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a href='/hack/path64/{{item.URI}}/'>{{item.title}}</a>
|
||||||
|
{{#item.creator}}<small>by: <i>{{item.creator}}</i></small>{{/item.creator}}
|
||||||
|
{{#item.player}}
|
||||||
|
<p><iframe frameBorder='0' seamless='seamless' width='{{width}}' height='{{height}}' src='{{url}}'></iframe></p>
|
||||||
|
{{/item.player}}
|
||||||
|
<p><i>{{item.description}}</i></p>
|
||||||
|
</li>
|
||||||
|
{{/items}}</ul>
|
18
app/templates/list.txt
Normal file
18
app/templates/list.txt
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{{#items}}
|
||||||
|
|
||||||
|
<div class="col-sm-6 col-md-4">
|
||||||
|
<div class="thumbnail">
|
||||||
|
<h3><a href='/hack/path64/{{item.URI}}/'>{{item.title}}</a></h3>
|
||||||
|
<h4>{{#item.creator}}</h4><small>by: <i>{{item.creator}}</i></small>{{/item.creator}}
|
||||||
|
<img src="..." alt="...">
|
||||||
|
{{#item.player}}
|
||||||
|
<p><iframe style="display:none;" frameBorder='0' seamless='seamless' width='{{width}}' height='{{height}}' src='{{url}}'></iframe></p>
|
||||||
|
{{/item.player}}
|
||||||
|
<div class="caption">
|
||||||
|
<p><i>{{item.description}}</i></p>
|
||||||
|
<p><a href="#" class="btn btn-primary" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{/items}}
|
23
app/templates/list.txt~
Normal file
23
app/templates/list.txt~
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{{#items}}
|
||||||
|
|
||||||
|
<div class="col-sm-6 col-md-4">
|
||||||
|
<div class="thumbnail">
|
||||||
|
<h3><a href='/hack/path64/{{item.URI}}/'>{{item.title}}</a></h3>
|
||||||
|
<h4>{{#item.creator}}</h4><small>by: <i>{{item.creator}}</i></small>{{/item.creator}}
|
||||||
|
<img src="..." alt="...">
|
||||||
|
{{#item.player}}
|
||||||
|
<p><iframe style="display:none;" frameBorder='0' seamless='seamless' width='{{width}}' height='{{height}}' src='{{url}}'></iframe></p>
|
||||||
|
{{/item.player}}
|
||||||
|
<div class="caption">
|
||||||
|
<p><i>{{item.description}}</i></p>
|
||||||
|
<p><a href="#" class="btn btn-primary" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{{/items}}
|
27
bower.json
Normal file
27
bower.json
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"name": "arkiwijsboilerplate",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"authors": [
|
||||||
|
"cek<cek@posta.indivia.net>"
|
||||||
|
],
|
||||||
|
"description": "Arkiwi JS Boilerplate",
|
||||||
|
"main": "app/index.html",
|
||||||
|
"keywords": [
|
||||||
|
"Arkiwi, JS, Boilerplate"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"homepage": "arkiwi.org",
|
||||||
|
"ignore": [
|
||||||
|
"**/.*",
|
||||||
|
"node_modules",
|
||||||
|
"bower_components",
|
||||||
|
"app/bower_components",
|
||||||
|
"test",
|
||||||
|
"tests"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"jquery": "*",
|
||||||
|
"mustache": "~2.1.2",
|
||||||
|
"bower-parseuri": "~1.2.2"
|
||||||
|
}
|
||||||
|
}
|
20
package.json
Normal file
20
package.json
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.10.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"grunt": "~0.4.5",
|
||||||
|
"grunt-autoprefixer": "^3.0.3",
|
||||||
|
"grunt-concurrent": "^2.0.0",
|
||||||
|
"grunt-contrib-clean": "^0.6.0",
|
||||||
|
"grunt-contrib-concat": "~0.4.0",
|
||||||
|
"grunt-contrib-connect": "^0.10.1",
|
||||||
|
"grunt-contrib-copy": "^0.8.0",
|
||||||
|
"grunt-contrib-jshint": "~0.10.0",
|
||||||
|
"grunt-contrib-qunit": "~0.5.2",
|
||||||
|
"grunt-contrib-uglify": "~0.5.0",
|
||||||
|
"grunt-contrib-watch": "^0.6.1",
|
||||||
|
"grunt-newer": "^1.1.1",
|
||||||
|
"grunt-wiredep": "^2.0.0"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue