Commit 54918bd4 authored by Pascal Hartig's avatar Pascal Hartig

Merge branch 'stephenplusplus-maria' into gh-pages

parents 47a21f2d d019d29f
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
"name": "agilityjs", "name": "agilityjs",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"todomvc-common": "~0.1.2", "todomvc-common": "~0.1.4",
"agility": "~0.1.3", "agility": "~0.1.3",
"jquery": "~1.9.1" "jquery": "~1.9.1"
} }
} }
\ No newline at end of file
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
{
"name": "todomvc-common",
"version": "0.1.0",
"gitHead": "63628bfbeff187f6db5bc982a0a222e66e62901e",
"_id": "todomvc-common@0.1.0",
"readme": "ERROR: No README.md file found!",
"description": "ERROR: No README.md file found!",
"repository": {
"type": "git",
"url": "git://github.com/TasteJS/todomvc-common.git"
}
}
\ No newline at end of file
...@@ -3,6 +3,6 @@ ...@@ -3,6 +3,6 @@
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"angular": "~1.0.5", "angular": "~1.0.5",
"todomvc-common": "~0.1.2" "todomvc-common": "~0.1.4"
} }
} }
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"angular": "~1.0.5", "angular": "~1.0.5",
"todomvc-common": "~0.1.2" "todomvc-common": "~0.1.4"
}, },
"devDependencies": { "devDependencies": {
"angular-mocks": "~1.0.5" "angular-mocks": "~1.0.5"
......
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
"backbone": "~1.0.0", "backbone": "~1.0.0",
"underscore": "~1.4.4", "underscore": "~1.4.4",
"jquery": "~1.9.1", "jquery": "~1.9.1",
"todomvc-common": "~0.1.2", "todomvc-common": "~0.1.4",
"backbone.localStorage": "~1.1.0" "backbone.localStorage": "~1.1.0"
} }
} }
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
"dependencies": { "dependencies": {
"jquery": "~1.9.1", "jquery": "~1.9.1",
"canjs": "~1.1.4", "canjs": "~1.1.4",
"canjs-localstorage": "~0.1.0" "canjs-localstorage": "~0.1.0",
"todomvc-common": "~0.1.4"
} }
} }
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
{
"name": "todomvc-common",
"version": "0.1.1",
"gitHead": "639b3e310c9fd6970e8ccda893ad564915e715f5",
"_id": "todomvc-common@0.1.1",
"readme": "ERROR: No README.md file found!",
"description": "ERROR: No README.md file found!",
"repository": {
"type": "git",
"url": "git://github.com/tastejs/todomvc-common.git"
}
}
\ No newline at end of file
{ {
"name": "todomvc-closure", "name": "todomvc-closure",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"todomvc-common": "~0.1.2" "todomvc-common": "~0.1.4"
} }
} }
...@@ -6,9 +6,8 @@ ...@@ -6,9 +6,8 @@
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -29,9 +28,8 @@ ...@@ -29,9 +28,8 @@
} }
function redirect() { function redirect() {
if (location.hostname === 'addyosmani.github.com') { if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.com/todomvc', location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
'todomvc.com');
} }
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"name": "todomvc-emberjs", "name": "todomvc-emberjs",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"todomvc-common": "~0.1.2", "todomvc-common": "~0.1.4",
"jquery": "~1.9.1", "jquery": "~1.9.1",
"handlebars": "~1.0.0-rc.3", "handlebars": "~1.0.0-rc.3",
"ember": "~1.0.0-rc.1", "ember": "~1.0.0-rc.1",
......
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
...@@ -4,6 +4,6 @@ ...@@ -4,6 +4,6 @@
"dependencies": { "dependencies": {
"jquery": "~1.9.1", "jquery": "~1.9.1",
"handlebars": "~1.0.0-rc.3", "handlebars": "~1.0.0-rc.3",
"todomvc-common": "~0.1.2" "todomvc-common": "~0.1.4"
} }
} }
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"name": "todomvc-knockoutjs", "name": "todomvc-knockoutjs",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"todomvc-common": "~0.1.2", "todomvc-common": "~0.1.4",
"knockout.js": "~2.2.0rc", "knockout.js": "~2.2.0rc",
"director": "~1.1.10" "director": "~1.1.10"
} }
......
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
{
"name": "todomvc-maria",
"version": "0.0.0",
"dependencies": {
"todomvc-common": "~0.1.4",
"director": "~1.2.0"
}
}
html,
body {
margin: 0;
padding: 0;
}
button {
margin: 0;
padding: 0;
border: 0;
background: none;
font-size: 100%;
vertical-align: baseline;
font-family: inherit;
color: inherit;
-webkit-appearance: none;
/*-moz-appearance: none;*/
-ms-appearance: none;
-o-appearance: none;
appearance: none;
}
body {
font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif;
line-height: 1.4em;
background: #eaeaea url('bg.png');
color: #4d4d4d;
width: 550px;
margin: 0 auto;
-webkit-font-smoothing: antialiased;
-moz-font-smoothing: antialiased;
-ms-font-smoothing: antialiased;
-o-font-smoothing: antialiased;
font-smoothing: antialiased;
}
#todoapp {
background: #fff;
background: rgba(255, 255, 255, 0.9);
margin: 130px 0 40px 0;
border: 1px solid #ccc;
position: relative;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.2),
0 25px 50px 0 rgba(0, 0, 0, 0.15);
}
#todoapp:before {
content: '';
border-left: 1px solid #f5d6d6;
border-right: 1px solid #f5d6d6;
width: 2px;
position: absolute;
top: 0;
left: 40px;
height: 100%;
}
#todoapp input::-webkit-input-placeholder {
font-style: italic;
}
#todoapp input:-moz-placeholder {
font-style: italic;
color: #a9a9a9;
}
#todoapp h1 {
position: absolute;
top: -120px;
width: 100%;
font-size: 70px;
font-weight: bold;
text-align: center;
color: #b3b3b3;
color: rgba(255, 255, 255, 0.3);
text-shadow: -1px -1px rgba(0, 0, 0, 0.2);
-webkit-text-rendering: optimizeLegibility;
-moz-text-rendering: optimizeLegibility;
-ms-text-rendering: optimizeLegibility;
-o-text-rendering: optimizeLegibility;
text-rendering: optimizeLegibility;
}
#header {
padding-top: 15px;
border-radius: inherit;
}
#header:before {
content: '';
position: absolute;
top: 0;
right: 0;
left: 0;
height: 15px;
z-index: 2;
border-bottom: 1px solid #6c615c;
background: #8d7d77;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(132, 110, 100, 0.8)),to(rgba(101, 84, 76, 0.8)));
background: -webkit-linear-gradient(top, rgba(132, 110, 100, 0.8), rgba(101, 84, 76, 0.8));
background: -moz-linear-gradient(top, rgba(132, 110, 100, 0.8), rgba(101, 84, 76, 0.8));
background: -o-linear-gradient(top, rgba(132, 110, 100, 0.8), rgba(101, 84, 76, 0.8));
background: -ms-linear-gradient(top, rgba(132, 110, 100, 0.8), rgba(101, 84, 76, 0.8));
background: linear-gradient(top, rgba(132, 110, 100, 0.8), rgba(101, 84, 76, 0.8));
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#9d8b83', EndColorStr='#847670');
border-top-left-radius: 1px;
border-top-right-radius: 1px;
}
#new-todo,
.edit {
position: relative;
margin: 0;
width: 100%;
font-size: 24px;
font-family: inherit;
line-height: 1.4em;
border: 0;
outline: none;
color: inherit;
padding: 6px;
border: 1px solid #999;
box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-o-box-sizing: border-box;
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
-moz-font-smoothing: antialiased;
-ms-font-smoothing: antialiased;
-o-font-smoothing: antialiased;
font-smoothing: antialiased;
}
#new-todo {
padding: 16px 16px 16px 60px;
border: none;
background: rgba(0, 0, 0, 0.02);
z-index: 2;
box-shadow: none;
}
#main {
position: relative;
z-index: 2;
border-top: 1px dotted #adadad;
}
label[for='toggle-all'] {
display: none;
}
#toggle-all {
position: absolute;
top: -42px;
left: -4px;
width: 40px;
text-align: center;
border: none; /* Mobile Safari */
}
#toggle-all:before {
content: '»';
font-size: 28px;
color: #d9d9d9;
padding: 0 25px 7px;
}
#toggle-all:checked:before {
color: #737373;
}
#todo-list {
margin: 0;
padding: 0;
list-style: none;
}
#todo-list li {
position: relative;
font-size: 24px;
border-bottom: 1px dotted #ccc;
}
#todo-list li:last-child {
border-bottom: none;
}
#todo-list li.editing {
border-bottom: none;
padding: 0;
}
#todo-list li.editing .edit {
display: block;
width: 506px;
padding: 13px 17px 12px 17px;
margin: 0 0 0 43px;
}
#todo-list li.editing .view {
display: none;
}
#todo-list li .toggle {
text-align: center;
width: 40px;
/* auto, since non-WebKit browsers doesn't support input styling */
height: auto;
position: absolute;
top: 0;
bottom: 0;
margin: auto 0;
border: none; /* Mobile Safari */
-webkit-appearance: none;
/*-moz-appearance: none;*/
-ms-appearance: none;
-o-appearance: none;
appearance: none;
}
#todo-list li .toggle:after {
content: '✔';
line-height: 43px; /* 40 + a couple of pixels visual adjustment */
font-size: 20px;
color: #d9d9d9;
text-shadow: 0 -1px 0 #bfbfbf;
}
#todo-list li .toggle:checked:after {
color: #85ada7;
text-shadow: 0 1px 0 #669991;
bottom: 1px;
position: relative;
}
#todo-list li label {
word-break: break-word;
padding: 15px;
margin-left: 45px;
display: block;
line-height: 1.2;
-webkit-transition: color 0.4s;
-moz-transition: color 0.4s;
-ms-transition: color 0.4s;
-o-transition: color 0.4s;
transition: color 0.4s;
}
#todo-list li.completed label {
color: #a9a9a9;
text-decoration: line-through;
}
#todo-list li .destroy {
display: none;
position: absolute;
top: 0;
right: 10px;
bottom: 0;
width: 40px;
height: 40px;
margin: auto 0;
font-size: 22px;
color: #a88a8a;
-webkit-transition: all 0.2s;
-moz-transition: all 0.2s;
-ms-transition: all 0.2s;
-o-transition: all 0.2s;
transition: all 0.2s;
}
#todo-list li .destroy:hover {
text-shadow: 0 0 1px #000,
0 0 10px rgba(199, 107, 107, 0.8);
-webkit-transform: scale(1.3);
-moz-transform: scale(1.3);
-ms-transform: scale(1.3);
-o-transform: scale(1.3);
transform: scale(1.3);
}
#todo-list li .destroy:after {
content: '✖';
}
#todo-list li:hover .destroy {
display: block;
}
#todo-list li .edit {
display: none;
}
#todo-list li.editing:last-child {
margin-bottom: -1px;
}
#footer {
color: #777;
padding: 0 15px;
position: absolute;
right: 0;
bottom: -31px;
left: 0;
height: 20px;
z-index: 1;
text-align: center;
}
#footer:before {
content: '';
position: absolute;
right: 0;
bottom: 31px;
left: 0;
height: 50px;
z-index: -1;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.3),
0 6px 0 -3px rgba(255, 255, 255, 0.8),
0 7px 1px -3px rgba(0, 0, 0, 0.3),
0 43px 0 -6px rgba(255, 255, 255, 0.8),
0 44px 2px -6px rgba(0, 0, 0, 0.2);
}
#todo-count {
float: left;
text-align: left;
}
#filters {
margin: 0;
padding: 0;
list-style: none;
position: absolute;
right: 0;
left: 0;
}
#filters li {
display: inline;
}
#filters li a {
color: #83756f;
margin: 2px;
text-decoration: none;
}
#filters li a.selected {
font-weight: bold;
}
#clear-completed {
float: right;
position: relative;
line-height: 20px;
text-decoration: none;
background: rgba(0, 0, 0, 0.1);
font-size: 11px;
padding: 0 10px;
border-radius: 3px;
box-shadow: 0 -1px 0 0 rgba(0, 0, 0, 0.2);
}
#clear-completed:hover {
background: rgba(0, 0, 0, 0.15);
box-shadow: 0 -1px 0 0 rgba(0, 0, 0, 0.3);
}
#info {
margin: 65px auto 0;
color: #a6a6a6;
font-size: 12px;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);
text-align: center;
}
#info a {
color: inherit;
}
/*
Hack to remove background from Mobile Safari.
Can't use it globally since it destroys checkboxes in Firefox and Opera
*/
@media screen and (-webkit-min-device-pixel-ratio:0) {
#toggle-all,
#todo-list li .toggle {
background: none;
}
#todo-list li .toggle {
height: 40px;
}
#toggle-all {
top: -56px;
left: -15px;
width: 65px;
height: 41px;
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
-webkit-appearance: none;
appearance: none;
}
}
.hidden{
display:none;
}
(function () {
'use strict';
if (location.hostname === 'todomvc.com') {
window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
}
function getSourcePath() {
// If accessed via addyosmani.github.io/todomvc/, strip the project path.
if (location.hostname.indexOf('github.io') > 0) {
return location.pathname.replace(/todomvc\//, '');
}
return location.pathname;
}
function appendSourceLink() {
var sourceLink = document.createElement('a');
var paragraph = document.createElement('p');
var footer = document.getElementById('info');
var urlBase = 'https://github.com/addyosmani/todomvc/tree/gh-pages';
if (footer) {
sourceLink.href = urlBase + getSourcePath();
sourceLink.appendChild(document.createTextNode('Check out the source'));
paragraph.appendChild(sourceLink);
footer.appendChild(paragraph);
}
}
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink();
redirect();
})();
...@@ -3,16 +3,20 @@ ...@@ -3,16 +3,20 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Maria • TodoMVC</title> <title>Maria • TodoMVC</title>
<link href="components/todomvc-common/base.css" rel="stylesheet">
<link href="../../../assets/base.css" rel="stylesheet">
<link href="css/app.css" rel="stylesheet"> <link href="css/app.css" rel="stylesheet">
</head> </head>
<body> <body>
<footer id="info">
<p>Double-click to edit a todo</p>
<p>Created by <a href="http://github.com/petermichaux">Peter Michaux</a></p>
<p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
</footer>
<script src="../lib/maria/maria.js"></script> <script src="components/todomvc-common/base.js"></script>
<script src="../lib/aristocrat/aristocrat.js"></script> <script src="components/director/build/director.js"></script>
<script src="../../../assets/director.min.js"></script> <script src="lib/maria/maria.js"></script>
<script src="lib/aristocrat/aristocrat.js"></script>
<script src="js/namespace.js"></script> <script src="js/namespace.js"></script>
<script src="js/util.js"></script> <script src="js/util.js"></script>
...@@ -25,12 +29,5 @@ ...@@ -25,12 +29,5 @@
<script src="js/views/TodoView.js"></script> <script src="js/views/TodoView.js"></script>
<script src="js/controllers/TodoController.js"></script> <script src="js/controllers/TodoController.js"></script>
<script src="js/bootstrap.js"></script> <script src="js/bootstrap.js"></script>
<footer id="info">
<p>Double-click to edit a todo</p>
<p>Created by <a href="http://github.com/petermichaux">Peter Michaux</a></p>
<p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
</footer>
</body> </body>
</html> </html>
/*jshint strict: false */ /*jshint strict: false */
/*global maria, Router, checkit */ /*global maria, Router, checkit */
maria.on(window, 'load', function() { maria.on(window, 'load', function () {
var model; var model;
if ((typeof localStorage === 'object') && (typeof JSON === 'object')) { if ((typeof localStorage === 'object') && (typeof JSON === 'object')) {
var store = localStorage.getItem('todos-maria'); var store = localStorage.getItem('todos-maria');
model = store ? checkit.TodosModel.fromJSON(JSON.parse(store)) :
new checkit.TodosModel(); if (store) {
maria.on(model, 'change', function() { model = checkit.TodosModel.fromJSON(JSON.parse(store));
} else {
model = new checkit.TodosModel();
}
maria.on(model, 'change', function () {
localStorage.setItem('todos-maria', JSON.stringify(model.toJSON())); localStorage.setItem('todos-maria', JSON.stringify(model.toJSON()));
}); });
} } else {
else {
model = new checkit.TodosModel(); model = new checkit.TodosModel();
} }
var routes = { var routes = {
'/': function() { '/': function () {
model.setMode('all'); model.setMode('all');
}, },
'/active': function() { '/active': function () {
model.setMode('incompleted'); model.setMode('incompleted');
}, },
'/completed': function() { '/completed': function () {
model.setMode('completed'); model.setMode('completed');
} }
}; };
var router = Router(routes);
var router = new Router(routes);
router.init(); router.init();
var view = new checkit.TodosAppView(model); var view = new checkit.TodosAppView(model);
......
...@@ -3,35 +3,41 @@ ...@@ -3,35 +3,41 @@
maria.Controller.subclass(checkit, 'TodoController', { maria.Controller.subclass(checkit, 'TodoController', {
properties: { properties: {
onClickDestroy: function() { onClickDestroy: function () {
this.getModel().destroy(); this.getModel().destroy();
}, },
onClickToggle: function() {
onClickToggle: function () {
this.getModel().toggleCompleted(); this.getModel().toggleCompleted();
}, },
onDblclickLabel: function() {
onDblclickLabel: function () {
this.getView().showEdit(); this.getView().showEdit();
}, },
onKeyupEdit: function(evt) {
onKeyupEdit: function (evt) {
var keyCode = evt.keyCode; var keyCode = evt.keyCode;
if (checkit.isEnterKeyCode(keyCode)) { if (checkit.isEnterKeyCode(keyCode)) {
this.onBlurEdit(); this.onBlurEdit();
} } else if (checkit.isEscapeKeyCode(keyCode)) {
else if (checkit.isEscapeKeyCode(keyCode)) {
var view = this.getView(); var view = this.getView();
view.resetEdit(); view.resetEdit();
view.showDisplay(); view.showDisplay();
} }
}, },
onBlurEdit: function() {
onBlurEdit: function () {
var model = this.getModel(); var model = this.getModel();
var view = this.getView(); var view = this.getView();
var value = view.getInputValue(); var value = view.getInputValue();
view.showDisplay(); view.showDisplay();
if (checkit.isBlank(value)) { if (checkit.isBlank(value)) {
model.destroy(); model.destroy();
} } else {
else {
model.setTitle(value); model.setTitle(value);
} }
} }
......
...@@ -3,28 +3,33 @@ ...@@ -3,28 +3,33 @@
maria.Controller.subclass(checkit, 'TodosAppController', { maria.Controller.subclass(checkit, 'TodosAppController', {
properties: { properties: {
onKeyupNewTodo: function(evt) { onKeyupNewTodo: function (evt) {
if (checkit.isEnterKeyCode(evt.keyCode)) { if (checkit.isEnterKeyCode(evt.keyCode)) {
var view = this.getView(); var view = this.getView();
var value = view.getInputValue(); var value = view.getInputValue();
if (!checkit.isBlank(value)) { if (!checkit.isBlank(value)) {
var todo = new checkit.TodoModel(); var todo = new checkit.TodoModel();
todo.setTitle(value); todo.setTitle(value);
this.getModel().add(todo); this.getModel().add(todo);
view.clearInput(); view.clearInput();
} }
} }
}, },
onClickToggleAll: function() {
onClickToggleAll: function () {
var model = this.getModel(); var model = this.getModel();
if (model.isAllCompleted()) { if (model.isAllCompleted()) {
model.markAllIncompleted(); model.markAllIncompleted();
} } else {
else {
model.markAllCompleted(); model.markAllCompleted();
} }
}, },
onClickClearCompleted: function() {
onClickClearCompleted: function () {
this.getModel().deleteCompleted(); this.getModel().deleteCompleted();
} }
} }
......
...@@ -5,30 +5,40 @@ maria.Model.subclass(checkit, 'TodoModel', { ...@@ -5,30 +5,40 @@ maria.Model.subclass(checkit, 'TodoModel', {
properties: { properties: {
_title: '', _title: '',
_completed: false, _completed: false,
getTitle: function() {
getTitle: function () {
return this._title; return this._title;
}, },
setTitle: function(title) {
setTitle: function (title) {
title = ('' + title).trim(); title = ('' + title).trim();
if (this._title !== title) { if (this._title !== title) {
this._title = title; this._title = title;
this.dispatchEvent({type: 'change'});
this.dispatchEvent({ type: 'change' });
} }
}, },
isCompleted: function() {
isCompleted: function () {
return this._completed; return this._completed;
}, },
setCompleted: function(completed) {
setCompleted: function (completed) {
completed = !!completed; completed = !!completed;
if (this._completed !== completed) { if (this._completed !== completed) {
this._completed = completed; this._completed = completed;
this.dispatchEvent({type: 'change'});
this.dispatchEvent({ type: 'change' });
} }
}, },
toggleCompleted: function() {
toggleCompleted: function () {
this.setCompleted(!this.isCompleted()); this.setCompleted(!this.isCompleted());
}, },
toJSON: function() {
toJSON: function () {
return { return {
title: this._title, title: this._title,
completed: this._completed completed: this._completed
...@@ -37,9 +47,11 @@ maria.Model.subclass(checkit, 'TodoModel', { ...@@ -37,9 +47,11 @@ maria.Model.subclass(checkit, 'TodoModel', {
} }
}); });
checkit.TodoModel.fromJSON = function(todoJSON) { checkit.TodoModel.fromJSON = function (todoJSON) {
var model = new checkit.TodoModel(); var model = new checkit.TodoModel();
model._title = todoJSON.title; model._title = todoJSON.title;
model._completed = todoJSON.completed; model._completed = todoJSON.completed;
return model; return model;
}; };
...@@ -4,61 +4,79 @@ ...@@ -4,61 +4,79 @@
maria.SetModel.subclass(checkit, 'TodosModel', { maria.SetModel.subclass(checkit, 'TodosModel', {
properties: { properties: {
_mode: 'all', _mode: 'all',
getPossibleModes: function() {
getPossibleModes: function () {
return ['all', 'incompleted', 'completed']; return ['all', 'incompleted', 'completed'];
}, },
getMode: function() {
getMode: function () {
return this._mode; return this._mode;
}, },
setMode: function(mode) {
if (this.getPossibleModes().some(function(m) {return m === mode;})) { setMode: function (mode) {
var modePossible = this.getPossibleModes().some(function (m) {
return m === mode;
});
if (modePossible) {
if (this._mode !== mode) { if (this._mode !== mode) {
this._mode = mode; this._mode = mode;
this.dispatchEvent({type: 'change'});
this.dispatchEvent({ type: 'change' });
} }
} } else {
else { throw new Error('checkit.TodosModel.prototype.setMode: unsupported mode "' + mode + '".');
throw new Error('checkit.TodosModel.prototype.setMode: unsupported mode "'+mode+'".');
} }
}, },
getCompleted: function() {
return this.filter(function(todo) { getCompleted: function () {
return this.filter(function (todo) {
return todo.isCompleted(); return todo.isCompleted();
}); });
}, },
getIncompleted: function() {
return this.filter(function(todo) { getIncompleted: function () {
return this.filter(function (todo) {
return !todo.isCompleted(); return !todo.isCompleted();
}); });
}, },
isAllCompleted: function() {
isAllCompleted: function () {
return (this.length > 0) && (this.getCompleted().length === this.length); return (this.length > 0) && (this.getCompleted().length === this.length);
}, },
markAllCompleted: function() {
this.forEach(function(todo) { markAllCompleted: function () {
this.forEach(function (todo) {
todo.setCompleted(true); todo.setCompleted(true);
}); });
}, },
markAllIncompleted: function() {
this.forEach(function(todo) { markAllIncompleted: function () {
this.forEach(function (todo) {
todo.setCompleted(false); todo.setCompleted(false);
}); });
}, },
deleteCompleted: function() {
deleteCompleted: function () {
this['delete'].apply(this, this.getCompleted()); this['delete'].apply(this, this.getCompleted());
}, },
toJSON: function() {
return this.map(function(todo) { toJSON: function () {
return this.map(function (todo) {
return todo.toJSON(); return todo.toJSON();
}); });
} }
} }
}); });
checkit.TodosModel.fromJSON = function(todosJSON) { checkit.TodosModel.fromJSON = function (todosJSON) {
var model = new checkit.TodosModel(); var model = new checkit.TodosModel();
for (var i = 0, ilen = todosJSON.length; i < ilen; i++) { var i;
var ilen;
for (i = 0, ilen = todosJSON.length; i < ilen; i++) {
model.add(checkit.TodoModel.fromJSON(todosJSON[i])); model.add(checkit.TodoModel.fromJSON(todosJSON[i]));
} }
return model; return model;
}; };
/*jshint strict: false */ /*jshint strict: false */
/*global checkit */ /*global checkit */
checkit.isBlank = function(str) { checkit.isBlank = function (str) {
return (/^\s*$/).test(str); return (/^\s*$/).test(str);
}; };
checkit.escapeHTML = function(str) { checkit.escapeHTML = function (str) {
return String(str) return String(str)
.replace(/&(?!\w+;)/g, '&amp;') .replace(/&(?!\w+;)/g, '&amp;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
...@@ -13,10 +13,10 @@ checkit.escapeHTML = function(str) { ...@@ -13,10 +13,10 @@ checkit.escapeHTML = function(str) {
.replace(/"/g, '&quot;'); .replace(/"/g, '&quot;');
}; };
checkit.isEnterKeyCode = function(keyCode) { checkit.isEnterKeyCode = function (keyCode) {
return keyCode === 13; return keyCode === 13;
}; };
checkit.isEscapeKeyCode = function(keyCode) { checkit.isEscapeKeyCode = function (keyCode) {
return keyCode === 27; return keyCode === 27;
}; };
...@@ -3,17 +3,18 @@ ...@@ -3,17 +3,18 @@
maria.ElementView.subclass(checkit, 'TodoView', { maria.ElementView.subclass(checkit, 'TodoView', {
uiActions: { uiActions: {
'click .destroy': 'onClickDestroy' , 'click .destroy': 'onClickDestroy',
'click .toggle' : 'onClickToggle' , 'click .toggle': 'onClickToggle',
'dblclick label' : 'onDblclickLabel', 'dblclick label': 'onDblclickLabel',
'keyup .edit' : 'onKeyupEdit' , 'keyup .edit': 'onKeyupEdit',
'blur .edit' : 'onBlurEdit' 'blur .edit': 'onBlurEdit'
}, },
properties: { properties: {
buildData: function() { buildData: function () {
var model = this.getModel(); var model = this.getModel();
var item = this.find('li'); var item = this.find('li');
aristocrat.removeClass(item, '(in|)completed'); aristocrat.removeClass(item, '(in|)completed');
aristocrat.addClass(item, (model.isCompleted() ? 'completed' : 'incompleted')); aristocrat.addClass(item, (model.isCompleted() ? 'completed' : 'incompleted'));
...@@ -21,23 +22,32 @@ maria.ElementView.subclass(checkit, 'TodoView', { ...@@ -21,23 +22,32 @@ maria.ElementView.subclass(checkit, 'TodoView', {
this.find('.toggle').checked = model.isCompleted(); this.find('.toggle').checked = model.isCompleted();
}, },
update: function() {
update: function () {
this.buildData(); this.buildData();
}, },
resetEdit: function() {
resetEdit: function () {
var input = this.find('.edit'); var input = this.find('.edit');
input.value = this.getModel().getTitle(); input.value = this.getModel().getTitle();
}, },
showEdit: function() {
this.resetEdit(); showEdit: function () {
var input = this.find('.edit'); var input = this.find('.edit');
this.resetEdit();
aristocrat.addClass(this.find('li'), 'editing'); aristocrat.addClass(this.find('li'), 'editing');
input.focus(); input.focus();
}, },
showDisplay: function() {
showDisplay: function () {
aristocrat.removeClass(this.find('li'), 'editing'); aristocrat.removeClass(this.find('li'), 'editing');
}, },
getInputValue: function() {
getInputValue: function () {
return this.find('.edit').value; return this.find('.edit').value;
} }
} }
......
...@@ -3,12 +3,13 @@ ...@@ -3,12 +3,13 @@
maria.SetView.subclass(checkit, 'TodosAppView', { maria.SetView.subclass(checkit, 'TodosAppView', {
uiActions: { uiActions: {
'keyup #new-todo' : 'onKeyupNewTodo' , 'keyup #new-todo': 'onKeyupNewTodo',
'click #toggle-all' : 'onClickToggleAll' , 'click #toggle-all': 'onClickToggleAll',
'click #clear-completed': 'onClickClearCompleted' 'click #clear-completed': 'onClickClearCompleted'
}, },
properties: { properties: {
buildData: function() { buildData: function () {
var model = this.getModel(); var model = this.getModel();
var length = model.length; var length = model.length;
...@@ -20,11 +21,11 @@ maria.SetView.subclass(checkit, 'TodosAppView', { ...@@ -20,11 +21,11 @@ maria.SetView.subclass(checkit, 'TodosAppView', {
checkbox.disabled = model.isEmpty(); checkbox.disabled = model.isEmpty();
var todoList = this.find('#todo-list'); var todoList = this.find('#todo-list');
model.getPossibleModes().forEach(function(mode) { model.getPossibleModes().forEach(function (mode) {
aristocrat.removeClass(todoList, mode); aristocrat.removeClass(todoList, mode);
}); });
aristocrat.addClass(todoList, model.getMode()); aristocrat.addClass(todoList, model.getMode());
var incompletedLength = model.getIncompleted().length; var incompletedLength = model.getIncompleted().length;
this.find('#todo-count').innerHTML = this.find('#todo-count').innerHTML =
'<strong>' + incompletedLength + '</strong> ' + '<strong>' + incompletedLength + '</strong> ' +
...@@ -42,21 +43,27 @@ maria.SetView.subclass(checkit, 'TodosAppView', { ...@@ -42,21 +43,27 @@ maria.SetView.subclass(checkit, 'TodosAppView', {
clearButton.style.display = (completedLength > 0) ? '' : 'none'; clearButton.style.display = (completedLength > 0) ? '' : 'none';
clearButton.innerHTML = 'Clear completed (' + completedLength + ')'; clearButton.innerHTML = 'Clear completed (' + completedLength + ')';
}, },
update: function(evt) {
update: function (evt) {
maria.SetView.prototype.update.call(this, evt); maria.SetView.prototype.update.call(this, evt);
this.buildData(); this.buildData();
}, },
getContainerEl: function() {
getContainerEl: function () {
// child views will be appended to this element // child views will be appended to this element
return this.find('#todo-list'); return this.find('#todo-list');
}, },
createChildView: function(todoModel) {
createChildView: function (todoModel) {
return new checkit.TodoView(todoModel); return new checkit.TodoView(todoModel);
}, },
getInputValue: function() {
getInputValue: function () {
return this.find('#new-todo').value; return this.find('#new-todo').value;
}, },
clearInput: function() {
clearInput: function () {
this.find('#new-todo').value = ''; this.find('#new-todo').value = '';
} }
} }
......
...@@ -78,7 +78,7 @@ aristocrat.removeClass(document.body, 'king'); ...@@ -78,7 +78,7 @@ aristocrat.removeClass(document.body, 'king');
var re = getRegExp(className); var re = getRegExp(className);
while (re.test(el.className)) { // in case multiple occurrences while (re.test(el.className)) { // in case multiple occurrences
el.className = el.className.replace(re, ' '); el.className = el.className.replace(re, ' ');
} }
}; };
/** /**
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"spine": "~1.0.9", "spine": "~1.0.9",
"todomvc-common": "~0.1.2", "todomvc-common": "~0.1.4",
"handlebars": "~1.0.0-rc.3", "handlebars": "~1.0.0-rc.3",
"jquery": "~1.8.3" "jquery": "~1.8.3"
} }
......
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
"backbone": "~0.9.10", "backbone": "~0.9.10",
"underscore": "~1.4.4", "underscore": "~1.4.4",
"jquery": "~1.9.1", "jquery": "~1.9.1",
"todomvc-common": "~0.1.2", "todomvc-common": "~0.1.4",
"backbone.localStorage": "~1.1.0", "backbone.localStorage": "~1.1.0",
"requirejs": "~2.1.5", "requirejs": "~2.1.5",
"requirejs-text": "~2.0.5" "requirejs-text": "~2.0.5"
......
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
"es5-shim": "git://github.com/kriskowal/es5-shim.git#2.0.0", "es5-shim": "git://github.com/kriskowal/es5-shim.git#2.0.0",
"flight": "~1.0.3", "flight": "~1.0.3",
"jquery": "1.8.3", "jquery": "1.8.3",
"requirejs": "~2.1.5" "requirejs": "~2.1.5",
"todomvc-common": "~0.1.4"
} }
} }
This diff is collapsed.
(function () {
'use strict';
if (location.hostname === 'todomvc.com') {
window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
}
function getSourcePath() {
// If accessed via addyosmani.github.io/todomvc/, strip the project path.
if (location.hostname.indexOf('github.io') > 0) {
return location.pathname.replace(/todomvc\//, '');
}
return location.pathname;
}
function appendSourceLink() {
var sourceLink = document.createElement('a');
var paragraph = document.createElement('p');
var footer = document.getElementById('info');
var urlBase = 'https://github.com/addyosmani/todomvc/tree/gh-pages';
if (footer) {
sourceLink.href = urlBase + getSourcePath();
sourceLink.appendChild(document.createTextNode('Check out the source'));
paragraph.appendChild(sourceLink);
footer.appendChild(paragraph);
}
}
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink();
redirect();
})();
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Flight • Todo</title> <title>Flight • Todo</title>
<link rel="stylesheet" href="../../assets/base.css"> <link rel="stylesheet" href="components/todomvc-common/base.css">
</head> </head>
<body> <body>
<section id="todoapp"> <section id="todoapp">
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<p>Created by <a href="http://github.com/mkuklis">Michal Kuklis</a></p> <p>Created by <a href="http://github.com/mkuklis">Michal Kuklis</a></p>
<p>Part of <a href="http://todomvc.com">TodoMVC</a></p> <p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
</footer> </footer>
<script src="../../assets/base.js"></script> <script src="components/todomvc-common/base.js"></script>
<script data-main="app/js/main" src="components/requirejs/requirejs.js"></script> <script data-main="app/js/main" src="components/requirejs/requirejs.js"></script>
</body> </body>
</html> </html>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"name": "todomvc-backbone-marionette", "name": "todomvc-backbone-marionette",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"todomvc-common": "~0.1.2", "todomvc-common": "~0.1.4",
"underscore": "~1.4.4", "underscore": "~1.4.4",
"backbone.localStorage": "~1.1.0", "backbone.localStorage": "~1.1.0",
"backbone.marionette": "~1.0.0-rc6" "backbone.marionette": "~1.0.0-rc6"
......
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
'use strict'; 'use strict';
if (location.hostname === 'todomvc.com') { if (location.hostname === 'todomvc.com') {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')); window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -28,5 +27,12 @@ ...@@ -28,5 +27,12 @@
} }
} }
function redirect() {
if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
}
}
appendSourceLink(); appendSourceLink();
redirect();
})(); })();
...@@ -5,6 +5,6 @@ ...@@ -5,6 +5,6 @@
"olives": "~1.4.0", "olives": "~1.4.0",
"emily": "~1.3.5", "emily": "~1.3.5",
"requirejs": "~2.1.5", "requirejs": "~2.1.5",
"todomvc-common": "~0.1.2" "todomvc-common": "~0.1.4"
} }
} }
...@@ -6,9 +6,8 @@ ...@@ -6,9 +6,8 @@
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -29,9 +28,8 @@ ...@@ -29,9 +28,8 @@
} }
function redirect() { function redirect() {
if (location.hostname === 'addyosmani.github.com') { if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.com/todomvc', location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
'todomvc.com');
} }
} }
......
{ {
"name": "todomvc-puremvc", "name": "todomvc-puremvc",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"puremvc": "~1.0.1", "puremvc": "~1.0.1",
"director": "~1.2.0", "director": "~1.2.0",
"todomvc-common": "~0.1.2" "todomvc-common": "~0.1.4"
} }
} }
...@@ -6,9 +6,8 @@ ...@@ -6,9 +6,8 @@
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -29,9 +28,8 @@ ...@@ -29,9 +28,8 @@
} }
function redirect() { function redirect() {
if (location.hostname === 'addyosmani.github.com') { if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.com/todomvc', location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
'todomvc.com');
} }
} }
......
{ {
"name": "todomvc-sammyjs", "name": "todomvc-sammyjs",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"sammy": "~0.7.4", "sammy": "~0.7.4",
"jquery": "~1.9.1", "jquery": "~1.9.1",
"todomvc-common": "~0.1.2" "todomvc-common": "~0.1.4"
} }
} }
...@@ -6,9 +6,8 @@ ...@@ -6,9 +6,8 @@
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -29,9 +28,8 @@ ...@@ -29,9 +28,8 @@
} }
function redirect() { function redirect() {
if (location.hostname === 'addyosmani.github.com') { if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.com/todomvc', location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
'todomvc.com');
} }
} }
......
...@@ -3,6 +3,6 @@ ...@@ -3,6 +3,6 @@
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"director": "~1.2.0", "director": "~1.2.0",
"todomvc-common": "~0.1.2" "todomvc-common": "~0.1.4"
} }
} }
...@@ -6,9 +6,8 @@ ...@@ -6,9 +6,8 @@
} }
function getSourcePath() { function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project // If accessed via addyosmani.github.io/todomvc/, strip the project path.
// path. if (location.hostname.indexOf('github.io') > 0) {
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, ''); return location.pathname.replace(/todomvc\//, '');
} }
return location.pathname; return location.pathname;
...@@ -29,9 +28,8 @@ ...@@ -29,9 +28,8 @@
} }
function redirect() { function redirect() {
if (location.hostname === 'addyosmani.github.com') { if (location.hostname === 'addyosmani.github.io') {
location.href = location.href.replace('addyosmani.github.com/todomvc', location.href = location.href.replace('addyosmani.github.io/todomvc', 'todomvc.com');
'todomvc.com');
} }
} }
......
{
"directory" : "client/code/libs"
}
var http = require('http'), var http = require('http');
ss = require('socketstream'); var ss = require('socketstream');
// Define a single-page client // Define a single-page client
ss.client.define('main', { ss.client.define('main', {
view: 'app.html', view: 'app.html',
css: ['base.css'], css: ['base.css'],
code: [ 'libs', 'app' ], code: [
'libs/jquery/jquery.js',
'libs/todomvc-common/base.js',
'app'
],
tmpl: '*' tmpl: '*'
}); });
// Serve this client on the root URL // Serve this client on the root URL
ss.http.route( '/', function( req, res ) { ss.http.route('/', function (req, res) {
res.serveClient('main'); res.serveClient('main');
}); });
// Use server-side compiled Hogan (Mustache) templates. Others engines available // Use server-side compiled Hogan (Mustache) templates. Others engines available
ss.client.templateEngine.use( require('ss-hogan') ); ss.client.templateEngine.use(require('ss-hogan'));
// Minimize and pack assets if you type: SS_ENV=production node app.js // Minimize and pack assets if you type: SS_ENV=production node app.js
if ( ss.env === 'production' ) { if (ss.env === 'production') {
ss.client.packAssets(); ss.client.packAssets();
} }
// Start web server // Start web server
var server = http.Server( ss.http.middleware ); var server = http.Server(ss.http.middleware);
server.listen(3000); server.listen(3000);
// Start SocketStream // Start SocketStream
ss.start( server ); ss.start(server);
// This file automatically gets called first by SocketStream and must always exist /*global $, ss*/
(function () {
'use strict';
// This file automatically gets called first by SocketStream and must always exist
// Make 'ss' available to all modules and the browser console // Make 'ss' available to all modules and the browser console
window.ss = require('socketstream'); window.ss = require('socketstream');
ss.server.on('disconnect', function() { ss.server.on('disconnect', function () {
console.log('Connection down :-('); console.log('Connection down :-(');
}); });
ss.server.on('reconnect', function() {
console.log('Connection back up :-)');
});
ss.server.on('ready', function() { ss.server.on('reconnect', function () {
console.log('Connection back up :-)');
});
// Wait for the DOM to finish loading ss.server.on('ready', function () {
$(function() { // Wait for the DOM to finish loading
$(function () {
// Load app // Load app
require('/app'); require('/app');
});
}); });
})();
});
(function( window ) {
'use strict';
if ( location.hostname === 'todomvc.com' ) {
window._gaq=[['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
}
})( window );
(function () {
'use strict';
if (location.hostname === 'todomvc.com') {
window._gaq = [['_setAccount','UA-31081062-1'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'));
}
function getSourcePath() {
// If accessed via addyosmani.github.com/todomvc/, strip the project
// path.
if (location.hostname.indexOf('github.com') > 0) {
return location.pathname.replace(/todomvc\//, '');
}
return location.pathname;
}
function appendSourceLink() {
var sourceLink = document.createElement('a');
var paragraph = document.createElement('p');
var footer = document.getElementById('info');
var urlBase = 'https://github.com/addyosmani/todomvc/tree/gh-pages';
if (footer) {
sourceLink.href = urlBase + getSourcePath();
sourceLink.appendChild(document.createTextNode('Check out the source'));
paragraph.appendChild(sourceLink);
footer.appendChild(paragraph);
}
}
function redirect() {
if (location.hostname === 'addyosmani.github.com') {
location.href = location.href.replace('addyosmani.github.com/todomvc',
'todomvc.com');
}
}
appendSourceLink();
redirect();
})();
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment