From 47a4d6b6a1e4bc4b837552db9657e201f6cd626e Mon Sep 17 00:00:00 2001 From: marco Date: Tue, 14 May 2013 23:55:34 -0400 Subject: [PATCH] initial polyfill implementation and metadata number entry javascript validation --- .../metadata_number_entry.html | 2 +- cms/static/js/base.js | 14 ++++ cms/static/sass/views/_unit.scss | 8 +- cms/templates/base.html | 4 +- .../html5-input-polyfills/number-polyfill.css | 80 +++++++++++++++++++ 5 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 common/static/css/vendor/html5-input-polyfills/number-polyfill.css diff --git a/cms/static/client_templates/metadata_number_entry.html b/cms/static/client_templates/metadata_number_entry.html index 981db06bd4..f60e47160f 100644 --- a/cms/static/client_templates/metadata_number_entry.html +++ b/cms/static/client_templates/metadata_number_entry.html @@ -1,6 +1,6 @@
- + diff --git a/cms/static/js/base.js b/cms/static/js/base.js index c8371fcf64..a986f2ac00 100644 --- a/cms/static/js/base.js +++ b/cms/static/js/base.js @@ -896,3 +896,17 @@ function saveSetSectionScheduleDate(e) { hideModal(); }); } + +function checkNumberSettingValidity(e) { + e.preventDefault(); + + if (!e.checkNumberSettingValidity()) + { + alert("You have invalid input. Correct it!"); + obj.focus(); + + $('this').val(''); + } +} + + diff --git a/cms/static/sass/views/_unit.scss b/cms/static/sass/views/_unit.scss index 86758c5c68..09a4a37abe 100644 --- a/cms/static/sass/views/_unit.scss +++ b/cms/static/sass/views/_unit.scss @@ -517,12 +517,12 @@ body.course.unit { &.is-set { @include linear-gradient($blue, $blue); color: $blue-d1; - box-shadow: inset 0 3px 3px $shadow-d1; + box-shadow: inset 0 2px 2px $shadow-d1; background-color: $blue; cursor: default; &:hover { - box-shadow: inset 0 3px 3px $shadow-d1; + box-shadow: inset 0 2px 2px $shadow-d1; background-color: $blue; } } @@ -664,6 +664,10 @@ body.course.unit { text-overflow: ellipsis; } + input[type="number"] { + width: 39%; + } + select { @include box-shadow(0 1px 2px $shadow-l1 inset); background: none repeat scroll #F2F2F2; diff --git a/cms/templates/base.html b/cms/templates/base.html index 521bb8b1ff..83627ba3e6 100644 --- a/cms/templates/base.html +++ b/cms/templates/base.html @@ -22,6 +22,7 @@ + <%include file="widgets/segment-io.html" /> @@ -38,6 +39,8 @@ + + <%static:js group='main'/> <%static:js group='module-js'/> @@ -49,7 +52,6 @@ - diff --git a/common/static/css/vendor/html5-input-polyfills/number-polyfill.css b/common/static/css/vendor/html5-input-polyfills/number-polyfill.css new file mode 100644 index 0000000000..ceaa34a8e9 --- /dev/null +++ b/common/static/css/vendor/html5-input-polyfills/number-polyfill.css @@ -0,0 +1,80 @@ +/* HTML5 Number polyfill | Jonathan Stipe | https://github.com/jonstipe/number-polyfill*/ +div.number-spin-btn-container { + display: inline-block; + position: relative; + vertical-align: bottom; + margin: 0; + padding: 0; } + +div.number-spin-btn { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-width: 2px; + border-color: #ededed #777777 #777777 #ededed; + border-style: solid; + background-color: #cccccc; + width: 1.2em; } + div.number-spin-btn:hover { + cursor: pointer; } + div.number-spin-btn:active { + border-width: 2px; + border-color: #5e5e5e #d8d8d8 #d8d8d8 #5e5e5e; + border-style: solid; + background-color: #999999; } + +div.number-spin-btn-up { + border-bottom-width: 1px; + -moz-border-radius: 3px 3px 0px 0px; + -webkit-border-radius: 3px 3px 0px 0px; + border-radius: 3px 3px 0px 0px; } + div.number-spin-btn-up:before { + border-width: 0 0.3em 0.3em 0.3em; + border-color: transparent transparent black transparent; + top: 25%; } + div.number-spin-btn-up:active { + border-bottom-width: 1px; } + div.number-spin-btn-up:active:before { + border-bottom-color: white; + top: 26%; + left: 51%; } + +div.number-spin-btn-down { + border-top-width: 1px; + -moz-border-radius: 0px 0px 3px 3px; + -webkit-border-radius: 0px 0px 3px 3px; + border-radius: 0px 0px 3px 3px; } + div.number-spin-btn-down:before { + border-width: 0.3em 0.3em 0 0.3em; + border-color: black transparent transparent transparent; + top: 75%; } + div.number-spin-btn-down:active { + border-top-width: 1px; } + div.number-spin-btn-down:active:before { + border-top-color: white; + top: 76%; + left: 51%; } + +div.number-spin-btn-up:before, +div.number-spin-btn-down:before { + content: ""; + width: 0; + height: 0; + border-style: solid; + position: absolute; + left: 50%; + margin: -0.15em 0 0 -0.3em; + padding: 0; } + +input:disabled + div.number-spin-btn-container > div.number-spin-btn-up:active, input:disabled + div.number-spin-btn-container > div.number-spin-btn-down:active { + border-color: #ededed #777777 #777777 #ededed; + border-style: solid; + background-color: #cccccc; } +input:disabled + div.number-spin-btn-container > div.number-spin-btn-up:before, input:disabled + div.number-spin-btn-container > div.number-spin-btn-up:active:before { + border-bottom-color: #999999; + top: 25%; + left: 50%; } +input:disabled + div.number-spin-btn-container > div.number-spin-btn-down:before, input:disabled + div.number-spin-btn-container > div.number-spin-btn-down:active:before { + border-top-color: #999999; + top: 75%; + left: 50%; }