diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 606d4ba29ec0c530d4169eb574ef2c7b63463269..0000000000000000000000000000000000000000 --- a/Gruntfile.js +++ /dev/null @@ -1,215 +0,0 @@ -module.exports = function(grunt) { - - require('load-grunt-tasks')(grunt); - require('time-grunt')(grunt); - - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - - htmlhint: { - options: { - 'attr-lower-case': true, - 'attr-value-not-empty': false, - 'tag-pair': true, - 'tag-self-close': false, - 'tagname-lowercase': true, - 'id-class-value': true, - 'id-unique': true, - 'img-alt-require': true, - 'img-alt-not-empty': true - }, - main: { - src: ['public/**.html'] - } - }, - - jshint: { - main: { - files: [{ - src: ['Gruntfile.js', 'js/**/*.js'] - }] - }, - options: { - globals: { - 'jQuery': true, - 'console': true - } - } - }, - - pug: { - options: { - pretty: true, - data: { - debug: true - } - }, - pages: { - files: [{ - expand: true, - cwd: 'pug/pages', - src: '*.pug', - dest: 'public/', - ext: '.html' - }] - } - }, - - copy: { - iejs: { - expand: true, - files: [{ - expand: true, - cwd: 'node_modules/html5shiv/dist', - src: "**", - dest: 'public/js' - }, - { - expand: true, - cwd: 'node_modules/Respond.js/src', - src: "**", - dest: 'public/js' - } - ] - }, - lfltcss: { - expand: true, - files: [{ - expand: true, - cwd: 'node_modules/leaflet/dist/images', - src: "**", - dest: 'public/img' - }] - }, - fonts: { - expand: true, - files: [{ - expand: true, - cwd: 'fonts', - src: "**", - dest: 'public/fonts' - }] - }, - imgrsrc: { - expand: true, - files: [{ - expand: true, - cwd: 'img', - src: "**", - dest: 'public/img' - }] - } - }, - - uglify: { - compress: { - files: { - 'public/js/index.js': [ - //'node_modules/jquery/dist/jquery.min.js', - //'node_modules/bootstrap/dist/js/bootstrap.min.js', - 'node_modules/leaflet/dist/leaflet.js', - 'js/*.js' - ] - }, - options: { - mangle: true, - unused: true - } - } - }, - - cssmin: { - options: { - sourceMap: true - }, - compress: { - files: { - 'public/css/index.css': [ - 'node_modules/bootstrap/dist/css/bootstrap.min.css', - //'node_modules/font-awesome/css/font-awesome.min.css', - //'node_modules/normalize.css/normalize.css', - 'node_modules/leaflet/dist/leaflet.css', - 'css/*.css' - ] - } - } - }, - - watch: { - grunt: { - files: ['Gruntfile.js'], - options: { - nospawn: true, - keepalive: true, - livereload: true - }, - tasks: ['public:dev'] - }, - html: { - files: ['public/*.html'], - options: { - nospawn: true, - keepalive: true, - livereload: true - }, - tasks: ['htmlhint'] - }, - js: { - files: 'js/**', - options: { - nospawn: true, - livereload: true - }, - tasks: ['jshint', 'uglify'] - }, - pug: { - files: ['pug/**'], - options: { - nospawn: true, - livereload: true - }, - tasks: ['pug'] - }, - css: { - files: 'css/**', - options: { - nospawn: true, - livereload: true - }, - tasks: ['cssmin'] - } - }, - - connect: { - server: { - options: { - port: 8080, - base: 'public', - hostname: 'localhost', - livereload: true - } - } - } - - }); - - grunt.registerTask('public:dev', function(target) { - grunt.task.run([ - 'pug', - 'htmlhint', - 'jshint', - 'copy', - 'uglify', - 'cssmin' - ]); - }); - - grunt.registerTask('serve', function(target) { - grunt.task.run([ - 'public:dev', - 'connect', - 'watch' - ]); - }); - -}; diff --git a/css/main.css b/css/main.css index 3d0ea8f4603171d245b7589aaa23bc5d0dae5878..b6637ca929353388b4f71c9ef2714e4c3fd887f7 100644 --- a/css/main.css +++ b/css/main.css @@ -8,12 +8,6 @@ src: url(../fonts/Roboto-Thin.ttf); } -#wrapper { - max-width: 968px; - margin: auto; - color: #454545; -} - #main { text-align: center; margin: 8px; @@ -32,3 +26,9 @@ #main p { text-align: justify; } + +#wrapper { + max-width: 968px; + margin: auto; + color: #454545; +} diff --git a/events/TheRealEvents/0.yaml b/events/TheRealEvents/0.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6f5c51c111b0349927dd19a5137f521e3aead504 --- /dev/null +++ b/events/TheRealEvents/0.yaml @@ -0,0 +1,10 @@ +id: "0" +name: "dummy1" +lat: "dummy" +lng: "dummy" +locationame: "dummy" +organizedby: "dummy" +when: "2017-06-11 12:30:33" +description: "Lorem ipsum dolor sit amet consectetur adipiscing elit, sociosqu proin a senectus risus mauris dignissim, gravida aliquam hac ut porttitor fermentum. Justo conubia odio netus etiam tempus sapien curae ullamcorper, inceptos fames cursus ridiculus orci sociosqu platea, aptent gravida natoque at tempor per pulvinar. Orci duis habitant nisi lacus congue, platea ullamcorper euismod sociosqu mauris, porttitor interdum blandit aenean." +contactinfo: "dummy" +imgurl: "https://placehold.it/150x150" diff --git a/events/TheRealEvents/1.yaml b/events/TheRealEvents/1.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fb174bdc904daf5a7da69d5c76f1b80c8ef88cee --- /dev/null +++ b/events/TheRealEvents/1.yaml @@ -0,0 +1,10 @@ +id: "1" +name: "dummy2" +lat: "dummy" +lng: "dummy" +locationame: "dummy" +organizedby: "dummy" +when: "2017-06-11 12:30:33" +description: "Lorem ipsum dolor sit amet consectetur adipiscing elit, sociosqu proin a senectus risus mauris dignissim, gravida aliquam hac ut porttitor fermentum. Justo conubia odio netus etiam tempus sapien curae ullamcorper, inceptos fames cursus ridiculus orci sociosqu platea, aptent gravida natoque at tempor per pulvinar. Orci duis habitant nisi lacus congue, platea ullamcorper euismod sociosqu mauris, porttitor interdum blandit aenean." +contactinfo: "dummy" +imgurl: "https://placehold.it/150x150" diff --git a/events/TheRealEvents/2.yaml b/events/TheRealEvents/2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7b59159ca1bc2bc209c9d153a7a2009d3df6a8c5 --- /dev/null +++ b/events/TheRealEvents/2.yaml @@ -0,0 +1,10 @@ +id: "2" +name: "dummy3" +lat: "dummy" +lng: "dummy" +locationame: "dummy" +organizedby: "dummy" +when: "2017-06-11 12:30:33" +description: "Lorem ipsum dolor sit amet consectetur adipiscing elit, sociosqu proin a senectus risus mauris dignissim, gravida aliquam hac ut porttitor fermentum. Justo conubia odio netus etiam tempus sapien curae ullamcorper, inceptos fames cursus ridiculus orci sociosqu platea, aptent gravida natoque at tempor per pulvinar. Orci duis habitant nisi lacus congue, platea ullamcorper euismod sociosqu mauris, porttitor interdum blandit aenean." +contactinfo: "dummy" +imgurl: "https://placehold.it/150x150" diff --git a/events/index.yaml b/events/index.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3184f3771dc7734490d01c335a6415422a58d4cb --- /dev/null +++ b/events/index.yaml @@ -0,0 +1,4 @@ +version: "1.0" +## i do not know how to avoid this! +totalevents: 3 +events: !!inc/dir [ 'TheRealEvents' , { ignoreTopLevelDir: true, ignoreIndicator: '-', excludeTopLevelDirSeparator: true } ] diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000000000000000000000000000000000000..95b9cf8486421b6f09343a75c69e93fff37c6fbb --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,186 @@ +var gulp = require('gulp'); +var htmlhint = require('gulp-htmlhint'); +var jshint = require('gulp-jshint'); +var csslint = require('gulp-csslint'); +var pug = require('gulp-pug'); +var concat = require('gulp-concat'); +var cssmin = require('gulp-cssmin'); +var uglify = require('gulp-uglify'); + +var connect = require('gulp-connect'); +var connectProxy = require('gulp-connect-proxy'); + +var yamlinc = require("gulp-yaml-include"); +var readYaml = require('read-yaml'); +var glob = require("glob"); + +gulp.task('assetscopy', function() { + gulp.src([ + 'node_modules/bootstrap/fonts/*.{ttf,woff,eot,svg, woff2}', + 'node_modules/font-awesome/fonts/*.{ttf,woff,eot,svg,woff2,otf}', + 'fonts/*.{ttf,woff,woff2}', + 'node_modules/bootcards/dist/fonts/*.{ttf,woff,eot,svg,woff2,otf}' + ]).pipe(gulp.dest('public/fonts')); + gulp.src([ + 'node_modules/leaflet/dist/images/**', + 'img/**' + ]).pipe(gulp.dest('public/img')); +}); + +gulp.task('htmllint', function() { + gulp.src("public/*.html") + .pipe(htmlhint()); +}); + +gulp.task('csslint', function() { + gulp.src('css/*.css') + .pipe(csslint({ + 'shorthand': false + })) + .pipe(csslint.formatter()); +}); + +gulp.task('jslint', function() { + gulp.src(["gulpfile.js", "js/*.js"]) + .pipe(jshint()) + .pipe(jshint.reporter('default')); +}); + +gulp.task('pughtml', function() { + gulp.src('pug/pages/*.pug') + .pipe(pug({ + pretty: true, + data: { + debug: true + } + })) + .pipe(gulp.dest('public')); + var yamlData = gulp.src("events/index.yaml") + .pipe(yamlinc()) + .pipe(gulp.dest('public/events')); + + readYaml('public/events/index.yaml', function(err, ydata) { + // if (err) throw err; + gulp.src('pug/templates/events.pug') + .pipe(pug({ + pretty: true, + data: { + debug: true, + events: ydata + } + })) + .pipe(concat('index' + '.html')) + .pipe(gulp.dest('public/events')); + }); + // options is optional + glob("events/TheRealEvents/*.yaml", {}, function (er, files) { + // files is an array of filenames. + // If the `nonull` option is set, and nothing + // was found, then files is ["**/*.js"] + // er is an error object or null. + var nooffiles = files.length; + for(var i = 0; i < nooffiles; i++){ + readYaml(files[i], function(err, ydata) { + if (err) throw err; + var id = ydata.id; + gulp.src('pug/templates/individual_event_page.pug') + .pipe(pug({ + pretty: true, + data: { + debug: true, + evt: ydata + } + })) + .pipe(concat(id + '.html')) + .pipe(gulp.dest('public/events')); + }); + + } + }); +}); + +gulp.task('cssmin', function() { + gulp.src([ + 'node_modules/bootstrap/dist/css/bootstrap.min.css', + //'node_modules/font-awesome/css/font-awesome.min.css', + //'node_modules/normalize.css/normalize.css', + 'node_modules/leaflet/dist/leaflet.css', + 'node_modules/bootcards/dist/css/bootcards-desktop.min.css', + // 'node_modules/bootcards/dist/css/bootcards-android.min.css', + // 'node_modules/bootcards/dist/css/bootcards-ios.min.css', + 'css/*.css' + ]) + .pipe(concat('index.css')) + .pipe(cssmin()) + .pipe(gulp.dest('public/css')); +}); + +gulp.task('jsuglify', function() { + gulp.src([ + 'node_modules/jquery/dist/jquery.min.js', + 'node_modules/bootstrap/dist/js/bootstrap.min.js', + 'node_modules/leaflet/dist/leaflet.js', + 'node_modules/bootcards/dist/js/bootcards.min.js', + 'js/*.js' + ]) + .pipe(concat('index.js')) + .pipe(uglify()) + .pipe(gulp.dest('public/js')); + gulp.src([ + 'node_modules/html5shiv/dist/html5shiv.js', + 'node_modules/Respond.js/src/respond.js' + ]) + .pipe(uglify()) + .pipe(gulp.dest('public/js')); +}); + +gulp.task('public', [ + 'assetscopy', + 'pughtml', + 'htmllint', + 'jslint', + 'jsuglify', + // 'csslint', + 'cssmin' +]); + +gulp.task('connect', function() { + connect.server({ + root: 'public', + port: 8080, + livereload: true + }); +}); + +gulp.task('watch', function() { + gulp.watch([ + './pug/**/*.pug' + ], [ + 'pughtml', + 'htmllint', + ]); + gulp.watch([ + 'css/*.css', + 'bower.json' + ], [ + // 'csslint', + 'cssmin' + ]); + gulp.watch([ + 'js/*.js', + 'bower.json' + ], [ + 'jslint', + 'jsuglify', + ]); +}); + +gulp.task('serve', [ + 'public', + 'connect', + 'watch' +]); + +gulp.task('default', [ + 'serve' +]); diff --git a/package.json b/package.json index c3164d69b7bd30976f943b7062da52e2085a2a07..6d8d1e42ede301f135715ed80b9b196a9f944c1d 100644 --- a/package.json +++ b/package.json @@ -3,41 +3,38 @@ "description": "Free Software User Groups in India", "repository": { "type": "git", - "url": "git+ssh://git@gitlab.com:fsug/fsug.gitlab.io.git" + "url": "git+ssh://git@gitlab.com:fsci/fsci.org.in.git" }, "bugs": { - "url": "https://gitlab.com/fsug/fsug.gitlab.io/issues" + "url": "https://gitlab.com/fsci/fsci.org.in/issues" }, "homepage": "https://fsug.in", "devDependencies": { "connect-livereload": "^0.5.4", - "grunt": "^1.0.1", - "grunt-cli": "^1.2.0", - "grunt-connect-proxy": "^0.2.0", - "grunt-contrib-concat": "^1.0.1", - "grunt-contrib-connect": "^1.0.2", - "grunt-contrib-copy": "^1.0.0", - "grunt-contrib-cssmin": "^1.0.1", - "grunt-contrib-jshint": "^1.1.0", - "grunt-contrib-nodeunit": "^0.4.1", - "grunt-contrib-pug": "^1.0.0", - "grunt-contrib-uglify": "^0.5.0", - "grunt-contrib-watch": "^1.0.0", - "grunt-htmlhint": "^0.9.13", - "grunt-preprocess": "^5.1.0", - "jshint-stylish": "^2.2.1", - "jstransformer-markdown-it": "^2.0.0", - "load-grunt-tasks": "^3.5.0", - "time-grunt": "^1.3.0" + "glob": "^7.1.2", + "gulp": "^3.9.1", + "gulp-concat": "^2.6.1", + "gulp-connect": "^5.0.0", + "gulp-connect-proxy": "^0.3.1", + "gulp-csslint": "^1.0.0", + "gulp-cssmin": "^0.2.0", + "gulp-htmlhint": "^0.3.1", + "gulp-jshint": "^2.0.4", + "gulp-pug": "^3.3.0", + "gulp-uglify": "^3.0.0", + "gulp-yaml-data": "^0.2.0", + "gulp-yaml-include": "^0.2.0", + "read-yaml": "^1.1.0" }, "dependencies": { - "html5shiv": "^3.7.0", "Respond.js": "git+https://github.com/scottjehl/Respond.git#1.4.0", - "jquery": "2.2.4", + "bootcards": "^1.1.2", "bootstrap": "^3.3.7", - "normalize.css": "^7.0.0", "font-awesome": "^4.7.0", - "leaflet": "^1.0.3" + "html5shiv": "^3.7.0", + "jquery": "2.2.4", + "leaflet": "^1.0.3", + "normalize.css": "^7.0.0" }, "author": "FSCI - Free Software Community of India <fosscommunity.in@disroot.org>", "license": "GPL-3.0" diff --git a/pug/pages/index.pug b/pug/pages/index.pug index ec9c3042cb0604c4c71eadcdb814aee2b9344eb5..e87fb63ef61f6e928454dc3c7137ce8f8c3fa8d3 100644 --- a/pug/pages/index.pug +++ b/pug/pages/index.pug @@ -1,7 +1,7 @@ extends ../layout.pug block head - title= $vars.title + title= "FSCI (Free Software Community of India)" block content #wrapper.container diff --git a/pug/settings/variables.pug b/pug/settings/variables.pug index 28faa0d3066aa0df1aac7f3dfac2029489b2a227..e0975ccda9f3da7f23e676b29489283a9256c965 100644 --- a/pug/settings/variables.pug +++ b/pug/settings/variables.pug @@ -1,8 +1,6 @@ - var $vars = {}; //funky name to hold all global variables in templates. - $vars.title = "FSCI (Free Software Community of India)"; - $vars.preamblelist = [ "Free Software Community of India is a collective of Free Software (sometimes also called as Open Source Software) users, advocates and developers.", "We maintain communication and collaboration infrastructure for everyone that respects their freedom and privacy. We maintain a list of Free Software communities and offer sub domains of fsug.in or fosscommunity.in. We depend on donations and community manpower to run the infrastructure.", diff --git a/pug/templates/css.pug b/pug/templates/css.pug index ae8be614fbd2ebdcb467271bcdc9e78c429e11b8..df02507954091cf465d130517e9f1ccb662ee3b8 100644 --- a/pug/templates/css.pug +++ b/pug/templates/css.pug @@ -2,10 +2,10 @@ // HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries // WARNING: Respond.js doesn't work if you view the page via file:// <!--[if lt IE 9]> - +script('js/html5shiv.js') - +script('js/respond.js') + +script('/js/html5shiv.js') + +script('/js/respond.js') <![endif]--> //- Compiled CSS //- the files in the css directory are added here on grunt serve -+link('stylesheet', 'css/index.css')(type='text/css') ++link('stylesheet', '/css/index.css')(type='text/css') diff --git a/pug/templates/events.pug b/pug/templates/events.pug new file mode 100644 index 0000000000000000000000000000000000000000..0097c8a60da5f48e9bd18fd27a42b70f62bba46b --- /dev/null +++ b/pug/templates/events.pug @@ -0,0 +1,33 @@ +extends ../layout.pug + +block head + title= "FSCI Events" + +block content + .container.bootcards-container.push-right + // This is where you come in... + // I've added some sample data below so you can get a feel for the required markup + .row + // left list column + #list.col-sm-12.bootcards-list(data-title='Contacts') + .panel.panel-default + .panel-body + .search-form + .row + .col-xs-9 + | + //-.form-group + input.form-control(type='text', placeholder='Search Contacts...') + i.fa.fa-search + .col-xs-3 + a.btn.btn-primary.btn-block(href='#') + i.fa.fa-plus + span Add + // panel body + .list-group + // list of sample data + for event in events.events + a.list-group-item(href='/events/' + event.id + '.html') + img.img-rounded.pull-left(src=event.imgurl) + h4.list-group-item-heading= event.name + p.list-group-item-text!= event.locationame diff --git a/pug/templates/individual_event_page.pug b/pug/templates/individual_event_page.pug new file mode 100644 index 0000000000000000000000000000000000000000..f85e8c9c5825fb8aab82c1510723257e7a5aba25 --- /dev/null +++ b/pug/templates/individual_event_page.pug @@ -0,0 +1,65 @@ +extends ../layout.pug + +block head + title= "FSCI Events" + +block content + .container.bootcards-container.push-right + .row + // left list column + //-#list.col-sm-5.bootcards-list(data-title='Contacts') + .panel.panel-default + .panel-body + .search-form + .row + //-.col-xs-9 + .form-group + input.form-control(type='text', placeholder='Search Contacts...') + i.fa.fa-search + .col-xs-3 + a.btn.btn-primary.btn-block(href='#') + i.fa.fa-plus + span Add + // panel body + .list-group + // list of sample data + for event in events.events + a.list-group-item(href='/events/' + event.lat + '.' + event.lng + '.html') + img.img-rounded.pull-left(src=event.imgurl) + h4.list-group-item-heading= event.name + p.list-group-item-text!= event.locationame + .col-sm-7.bootcards-cards.hidden-xs + // contact details + #contactCard + .panel.panel-default + .panel-heading.clearfix + h3.panel-title.pull-left Contact Details + .btn-group.pull-right.visible-xs + a.btn.btn-primary(href='#', data-toggle='modal', data-target='#editModal') + i.fa.fa-pencil + span Edit + .list-group + .list-group-item + label= "NAME" + h4.list-group-item-heading= evt.name + .list-group-item + label= "LOCATION" + a(href="http://www.openstreetmap.org/?mlat=" + evt.lat + "&mlon=" + evt.lng + "&ref=FSCI") + h4.list-group-item-heading= evt.locationname + .list-group-item + label= "ORGANIZED BY" + h4.list-group-item-heading= evt.organizedby + .list-group-item + label= "DATETIME" + h4.list-group-item-heading= evt.when + .list-group-item + label= "CONTACT INFO" + h4.list-group-item-heading= evt.contactinfo + + .panel.panel-default.bootcards-richtext + .panel-heading + h3.panel-title Description + .panel-body + | evt.description + p.lead + img(src=evt.imgurl, alt=evt.name) diff --git a/pug/templates/js.pug b/pug/templates/js.pug index ebe203bbe85443d2724c37007a866a794966eb25..922e13918895cad73d2e0279cb99274bc9544a1b 100644 --- a/pug/templates/js.pug +++ b/pug/templates/js.pug @@ -1,2 +1,2 @@ //- Compile JavaScript -+script('js/index.js') ++script('/js/index.js')