Skip to content

Commit d17f336

Browse files
Merge pull request #298 from nvisionative/develop
Merge `develop` into `main` for `2.3.0` release
2 parents 4688c7b + 18f6de1 commit d17f336

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+2058
-1972
lines changed

default.ascx

+5-29
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,17 @@
66

77
<!-- Main Content -->
88
<main>
9-
<div class="container-fluid bannerpane">
10-
<div class="container">
11-
<div class="row justify-content-center">
12-
<div id="BannerPane" class="col-md-8 text-center" runat="server"></div>
13-
</div>
14-
</div>
15-
</div>
16-
17-
<div class="container">
18-
<div class="row justify-content-center">
19-
<div id="ContentPane" class="col-md-8 text-center" runat="server"></div>
20-
</div>
21-
</div>
9+
10+
<div id="BannerPane" runat="server"></div>
2211

2312
<div class="container">
2413
<div class="row">
25-
<div id="DoublePaneOneOne" class="col-md-6 cpr-5" runat="server"></div>
26-
<div id="DoublePaneOneTwo" class="col-md-6 bg-light-grey cp-5" runat="server"></div>
27-
</div>
28-
</div>
29-
30-
<div class="container-fluid bg-tertiary">
31-
<div class="container">
32-
<div class="row align-items-center">
33-
<div id="FullWidthBGDoublePaneOne" class="col-md-6 cpy-5" runat="server"></div>
34-
<div id="FullWidthBGDoublePaneTwo" class="col-md-6" runat="server"></div>
35-
</div>
14+
<div id="ContentPane" class="col-12" runat="server"></div>
3615
</div>
3716
</div>
3817

39-
<div class="container">
40-
<div class="row justify-content-center">
41-
<div id="SinglePaneOne" class="col-md-8 text-center" runat="server"></div>
42-
</div>
43-
</div>
18+
<div id="FluidPane" runat="server"></div>
19+
4420
</main>
4521

4622
<!-- Footer -->

gulpfile.js

+73-29
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ var bs = require('browser-sync').create(),
22
gulp = require('gulp'),
33
autoprefixer = require('gulp-autoprefixer'),
44
jshint = require('gulp-jshint'),
5-
sass = require('gulp-sass'),
5+
sass = require('gulp-sass')(require('sass')),
66
imagemin = require('gulp-imagemin'),
7+
modernizr = require('gulp-modernizr'),
8+
imwebp = require('imagemin-webp'),
9+
webp = require('gulp-webp'),
710
rename = require('gulp-rename'),
811
uglify = require('gulp-uglify'),
912
notify = require('gulp-notify'),
@@ -49,7 +52,7 @@ var paths = {
4952
dest: './dist/js/'
5053
},
5154
images: {
52-
src: './src/images/**/*.{jpg,jpeg,png,gif,svg}',
55+
src: './src/images/**/*.{jpg,jpeg,png,gif,svg,webp}',
5356
dest: './dist/images/'
5457
},
5558
styles: {
@@ -79,7 +82,7 @@ var paths = {
7982
dest: './temp/'
8083
},
8184
zipelse: {
82-
src: ['./menus/**/*', './partials/*', '*.{ascx,xml,html,htm}'],
85+
src: ['./menus/**/*', './partials/*', '*.{ascx,xml,html,htm}', 'koi.json'],
8386
zipfile: 'else.zip',
8487
dest: './temp/'
8588
},
@@ -104,28 +107,28 @@ var paths = {
104107
function fontsInit() {
105108
return gulp.src(paths.fonts.src)
106109
.pipe(gulp.dest(paths.fonts.dest))
107-
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'fontsInit', sound: false}));
110+
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'fontsInit'}));
108111
}
109112

110113
// Copy fontawesome-free fonts from node_modules to dist/fonts
111114
function faFontsInit() {
112115
return gulp.src(paths.faFonts.src)
113116
.pipe(gulp.dest(paths.faFonts.dest))
114-
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'faFontsInit', sound: false}));
117+
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'faFontsInit'}));
115118
}
116119

117120
// Copy fontawesome-free CSS from node_modules to dist/css/fontawesome-free
118121
function faCssInit() {
119122
return gulp.src(paths.faCss.src)
120123
.pipe(gulp.dest(paths.faCss.dest))
121-
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'faCssInit', sound: false}));
124+
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'faCssInit'}));
122125
}
123126

124127
// Copy jquery.slimmenu.min.js from src/assets to dist/js
125128
function slimMenuInit() {
126129
return gulp.src(paths.slimMenu.src)
127130
.pipe(gulp.dest(paths.slimMenu.dest))
128-
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'slimMenuInit', sound: false}));
131+
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'slimMenuInit'}));
129132
}
130133

131134
// Compile normalize.css from node_modules and copy to dist/js
@@ -136,15 +139,33 @@ function normalizeInit() {
136139
.pipe(rename({suffix: '.min'}))
137140
.pipe(autoprefixer())
138141
.pipe(gulp.dest(paths.normalize.dest, { sourcemaps: '.' }))
139-
.pipe(notify({message: '<%= file.relative %> compiled and distributed!', title : 'normalizeInit', sound: false}));
142+
.pipe(notify({message: '<%= file.relative %> compiled and distributed!', title : 'normalizeInit'}));
140143
}
141144

142145
// Copy bootstrap JS from node_modules to dist/js
143146
function bsJsInit() {
144147
return gulp.src(paths.bsJs.src)
145148
.pipe(gulp.dest(paths.bsJs.dest))
146-
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'bsJsInit', sound: false}));
149+
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'bsJsInit'}));
147150
}
151+
152+
// modernizr Init
153+
function modernizrInit() {
154+
return gulp.src(paths.scripts.src)
155+
.pipe(modernizr({
156+
'options': [
157+
'setClasses'
158+
],
159+
'tests': [
160+
'webp'
161+
]
162+
}))
163+
.pipe(uglify())
164+
.pipe(rename({suffix: '-custom.min'}))
165+
.pipe(gulp.dest(paths.scripts.dest))
166+
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'modernizrInit', sound: false}));
167+
}
168+
148169
/*------------------------------------------------------*/
149170
/* END INIT TASKS --------------------------------------*/
150171
/*------------------------------------------------------*/
@@ -154,17 +175,34 @@ function bsJsInit() {
154175
/* IMAGE TASKS -----------------------------------------*/
155176
/*------------------------------------------------------*/
156177
// Optimize images and copy to dist/images
157-
function images() {
178+
function optimize() {
158179
return gulp.src(paths.images.src, {since: gulp.lastRun(images)})
159-
.pipe(imagemin({
160-
interlaced: true,
161-
progressive: true,
162-
optimizationLevel: 5,
163-
svgoPlugins: [{removeViewBox: true}]
164-
}))
180+
.pipe(imagemin([
181+
imagemin.gifsicle({interlaced: true}),
182+
imagemin.mozjpeg({quality: 75, progressive: true}),
183+
imagemin.optipng({optimizationLevel: 5}),
184+
imagemin.svgo({
185+
plugins: [
186+
{removeViewBox: true},
187+
{cleanupIDs: false}
188+
]
189+
})
190+
], {
191+
plugins: imwebp({quality:75})
192+
}
193+
))
165194
.pipe(gulp.dest(paths.images.dest))
166-
.pipe(notify({message: '<%= file.relative %> optimized!', title : 'images', sound: false}));
195+
.pipe(notify({message: '<%= file.relative %> optimized!', title : 'images'}));
167196
}
197+
198+
// Make WebP versions of all images
199+
function convert() {
200+
return gulp.src(paths.images.src, {since: gulp.lastRun(images)})
201+
.pipe(webp())
202+
.pipe(gulp.dest(paths.images.dest))
203+
.pipe(notify({message: '<%= file.relative %> converted to webp!', title : 'images'}));
204+
}
205+
168206
/*------------------------------------------------------*/
169207
/* END IMAGE TASKS -------------------------------------*/
170208
/*------------------------------------------------------*/
@@ -181,7 +219,7 @@ function styles() {
181219
.pipe(rename({suffix: '.min'}))
182220
.pipe(autoprefixer())
183221
.pipe(gulp.dest(paths.styles.dest, { sourcemaps: '.' }))
184-
.pipe(notify({message: '<%= file.relative %> compiled and distributed!', title : 'styles', sound: false}));
222+
.pipe(notify({message: '<%= file.relative %> compiled and distributed!', title: 'styles'}));
185223
}
186224
/*------------------------------------------------------*/
187225
/* END STYLES TASKS ------------------------------------*/
@@ -200,7 +238,7 @@ function scripts() {
200238
.pipe(gulp.dest(paths.scripts.dest, { sourcemaps: '.' }))
201239
.pipe(jshint.reporter('default'))
202240
.pipe(jshint.reporter('fail'))
203-
.pipe(notify({ message : '<%= file.relative %> minified!', title : "scripts", sound: false}));
241+
.pipe(notify({ message : '<%= file.relative %> minified!', title : "scripts"}));
204242
}
205243
/*------------------------------------------------------*/
206244
/* END SCRIPTS TASKS -----------------------------------*/
@@ -214,7 +252,7 @@ function scripts() {
214252
function containers() {
215253
return gulp.src(paths.containers.src)
216254
.pipe(gulp.dest(paths.containers.dest))
217-
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'containers', sound: false}));
255+
.pipe(notify({message: '<%= file.relative %> distributed!', title : 'containers'}));
218256
}
219257

220258
// Update manifest.dnn
@@ -232,7 +270,7 @@ function manifest() {
232270
.pipe(replace(/(\\Skins\\)(.*?)(?=\\)/g, '\\Skins\\'+project))
233271
.pipe(replace(/(\\Containers\\)(.*?)(?=\\)/g, '\\Containers\\'+project))
234272
.pipe(gulp.dest(paths.manifest.dest))
235-
.pipe(notify({message: '<%= file.relative %> updated!', title : 'manifest', sound: false}));
273+
.pipe(notify({message: '<%= file.relative %> updated!', title : 'manifest'}));
236274
}
237275
/*------------------------------------------------------*/
238276
/* END DNN TASKS ---------------------------------------*/
@@ -246,7 +284,7 @@ function manifest() {
246284
function cleandist() {
247285
return gulp.src(paths.cleandist.src, { allowEmpty: true })
248286
.pipe(clean())
249-
.pipe(notify({message: 'dist folder cleaned up!', title : 'cleandist', sound: false}));
287+
.pipe(notify({message: 'dist folder cleaned up!', title : 'cleandist'}));
250288
}
251289
/*------------------------------------------------------*/
252290
/* END MAINTENANCE TASKS -------------------------------*/
@@ -261,26 +299,26 @@ function zipdist() {
261299
return gulp.src(paths.zipdist.src)
262300
.pipe(zip(paths.zipdist.zipfile))
263301
.pipe(gulp.dest(paths.zipdist.dest))
264-
.pipe(notify({message: '<%= file.relative %> temporarily created!', title : 'zipdist', sound: false}));
302+
.pipe(notify({message: '<%= file.relative %> temporarily created!', title : 'zipdist'}));
265303
}
266304

267305
// ZIP contents of containers folder
268306
function zipcontainers() {
269307
return gulp.src(paths.zipcontainers.src)
270308
.pipe(zip(paths.zipcontainers.zipfile))
271309
.pipe(gulp.dest(paths.zipcontainers.dest))
272-
.pipe(notify({message: '<%= file.relative %> temporarily created!', title : 'zipcontainers', sound: false}));
310+
.pipe(notify({message: '<%= file.relative %> temporarily created!', title : 'zipcontainers'}));
273311
}
274312

275313
// ZIP everything else
276314
function zipelse() {
277315
return gulp.src(paths.zipelse.src, {base: '.'})
278316
.pipe(gulp.dest(paths.zipelse.dest))
279-
.pipe(notify({message: '<%= file.relative %> temporarily created!', title : 'zipcontainers', sound: false}))
317+
.pipe(notify({message: '<%= file.relative %> temporarily created!', title : 'zipcontainers'}))
280318
.pipe(replace('dist/', ''))
281319
.pipe(zip(paths.zipelse.zipfile))
282320
.pipe(gulp.dest(paths.zipelse.dest))
283-
.pipe(notify({message: '<%= file.relative %> temporarily created!', title : 'zipcontainers', sound: false}));
321+
.pipe(notify({message: '<%= file.relative %> temporarily created!', title : 'zipcontainers'}));
284322
}
285323

286324
// git ziptemp
@@ -291,14 +329,14 @@ function zippackage() {
291329
return gulp.src(paths.zippackage.src)
292330
.pipe(zip(paths.zippackage.zipfile))
293331
.pipe(gulp.dest(paths.zippackage.dest))
294-
.pipe(notify({message: '<%= file.relative %> created!', title : 'zippackage', sound: false}));
332+
.pipe(notify({message: '<%= file.relative %> created!', title : 'zippackage'}));
295333
}
296334

297335
// Clean temp folder
298336
function cleantemp() {
299337
return gulp.src(paths.cleantemp.src)
300338
.pipe(clean())
301-
.pipe(notify({message: 'temp folder cleaned up!', title : 'cleantemp', sound: false}));
339+
.pipe(notify({message: 'temp folder cleaned up!', title : 'cleantemp'}));
302340
}
303341
/*------------------------------------------------------*/
304342
/* END PACKAGING TASKS ---------------------------------*/
@@ -327,8 +365,11 @@ function watch() {
327365
gulp.watch(paths.containers.src, containers);
328366
}
329367

368+
// gulp images
369+
var images = gulp.series(optimize, convert);
370+
330371
// gulp init
331-
var init = gulp.series(fontsInit, faFontsInit, faCssInit, slimMenuInit, normalizeInit, bsJsInit);
372+
var init = gulp.series(fontsInit, faFontsInit, faCssInit, slimMenuInit, normalizeInit, bsJsInit, modernizrInit);
332373

333374
// gulp build
334375
var build = gulp.series(cleandist, init, styles, scripts, images, containers, manifest);
@@ -350,7 +391,10 @@ exports.faCssInit = faCssInit;
350391
exports.slimMenuInit = slimMenuInit;
351392
exports.normalizeInit = normalizeInit;
352393
exports.bsJsInit = bsJsInit;
394+
exports.convert = convert;
395+
exports.optimize = optimize;
353396
exports.images = images;
397+
exports.modernizrInit = modernizrInit;
354398
exports.styles = styles;
355399
exports.scripts = scripts;
356400
exports.containers = containers;

manifest.dnn

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<dotnetnuke type="Package" version="9.0">
22
<packages>
3-
<package name="nvisionative.nvQuickTheme" type="Skin" version="2.2.0">
3+
<package name="nvisionative.nvQuickTheme" type="Skin" version="2.3.0">
44
<friendlyName>nvQuickTheme</friendlyName>
55
<description>A DNN Theme Dev Framework</description>
66
<iconFile>MyIcon.png</iconFile>
@@ -80,6 +80,8 @@
8080
</staticContent>
8181
</node>
8282
<node path="/configuration/system.webServer/staticContent" action="update" key="fileExtension" collision="ignore">
83+
<remove fileExtension=".eot" />
84+
<mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
8385
<remove fileExtension=".otf" />
8486
<mimeMap fileExtension=".otf" mimeType="font/otf" />
8587
<remove fileExtension=".svg" />

menus/main/MainMenu.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
<li[?SELECTED] class="active"[/?]>
77

88
[?ENABLED]
9-
<a href="[=URL]" class="btn btn-primary[?NODE] split[/?]" target="[=TARGET]">[=TEXT]</a>
9+
<a href="[=URL]" class="btn btn-main-shade[?NODE] split[/?]"[?TARGET] target="[=TARGET]"[/?]>[=TEXT]</a>
1010
[?ELSE]
11-
<a href="#" class="btn btn-primary[?NODE] single[/?]" target="[=TARGET]">[=TEXT]</a>
11+
<a href="#" class="btn btn-main-shade[?NODE] single[/?]"[?TARGET] target="[=TARGET]"[/?]>[=TEXT]</a>
1212
[/?]
1313

1414
[?NODE]
@@ -23,9 +23,9 @@
2323
<li class="[?SELECTED] active[/?]">
2424

2525
[?ENABLED]
26-
<a href="[=URL]" [?NODE]class="split"[/?] target="[=TARGET]">[=TEXT]</a>
26+
<a href="[=URL]" [?NODE]class="split"[/?][?TARGET] target="[=TARGET]"[/?]>[=TEXT]</a>
2727
[?ELSE]
28-
<a href="#" target="[=TARGET]">[=TEXT]</a>
28+
<a href="#"[?TARGET] target="[=TARGET]"[/?]>[=TEXT]</a>
2929
[/?]
3030

3131
[?NODE]
@@ -34,4 +34,4 @@
3434
</ul>
3535
[/?]
3636
</li>
37-
[/>]
37+
[/>]

0 commit comments

Comments
 (0)