diff --git a/README.md b/README.md index 433d66f06b..10f82f1dc1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Build Status](https://magnum.travis-ci.com/TryGhost/Ghost.png?token=hMRLUurj2P3wzBdscyQs&branch=master)](https://magnum.travis-ci.com/TryGhost/Ghost) + # Ghost Welcome to the Ghost core repo. The code here is the result of a few stolen hours of free time hacking a proof of concept for the Kickstarter video. Pretty much everything is subject to and expected to change. diff --git a/core/admin/assets/js/settings.js b/core/admin/assets/js/settings.js index 014cefb87a..d28d068ed0 100644 --- a/core/admin/assets/js/settings.js +++ b/core/admin/assets/js/settings.js @@ -1,4 +1,4 @@ -/*globals document, jQuery */ +/*globals document, location, jQuery */ (function ($) { "use strict"; @@ -7,6 +7,7 @@ e.preventDefault(); $('.settings-menu .active').removeClass('active'); + location.hash = $(this).attr('class'); // Placed here so never gets given the active attribute. $(this).addClass('active'); $('.settings-content').fadeOut().delay(250); @@ -15,7 +16,20 @@ }; $(document).ready(function () { + if (location.hash) { + var page = $(".settings-menu li." + location.hash.replace('#', '')), + newPage = page.children('a').attr('href'); + $('.settings-menu .active').removeClass('active'); + page.addClass('active'); + + $('.settings-content').hide().delay(250); + $(newPage).show(); + } $('.settings-menu li').on('click', changePage); + + $('input').iCheck({ + checkboxClass: 'icheckbox_square-grey' + }); }); }(jQuery)); \ No newline at end of file diff --git a/core/admin/assets/lib/icheck/css/grey.png b/core/admin/assets/lib/icheck/css/grey.png new file mode 100644 index 0000000000..f69375854d Binary files /dev/null and b/core/admin/assets/lib/icheck/css/grey.png differ diff --git a/core/admin/assets/lib/icheck/css/grey@2x.png b/core/admin/assets/lib/icheck/css/grey@2x.png new file mode 100644 index 0000000000..5d6341c053 Binary files /dev/null and b/core/admin/assets/lib/icheck/css/grey@2x.png differ diff --git a/core/admin/assets/lib/icheck/css/icheck.css b/core/admin/assets/lib/icheck/css/icheck.css new file mode 100644 index 0000000000..ffef066fcc --- /dev/null +++ b/core/admin/assets/lib/icheck/css/icheck.css @@ -0,0 +1,62 @@ +/* iCheck plugin Square skin, grey +----------------------------------- */ +.icheckbox_square-grey, +.iradio_square-grey { + display: block; + margin: 0; + padding: 0; + width: 22px; + height: 22px; + background: url(grey.png) no-repeat; + border: none; + cursor: pointer; + float: left; + margin-right: 6px; +} + +.icheckbox_square-grey { + background-position: 0 0; +} +.icheckbox_square-grey.hover { + background-position: -24px 0; +} +.icheckbox_square-grey.checked { + background-position: -48px 0; +} +.icheckbox_square-grey.disabled { + background-position: -72px 0; + cursor: default; +} +.icheckbox_square-grey.checked.disabled { + background-position: -96px 0; +} + +.iradio_square-grey { + background-position: -120px 0; +} +.iradio_square-grey.hover { + background-position: -144px 0; +} +.iradio_square-grey.checked { + background-position: -168px 0; +} +.iradio_square-grey.disabled { + background-position: -192px 0; + cursor: default; +} +.iradio_square-grey.checked.disabled { + background-position: -216px 0; +} + +/* Retina support */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), +only screen and (-moz-min-device-pixel-ratio: 1.5), +only screen and (-o-min-device-pixel-ratio: 3/2), +only screen and (min-device-pixel-ratio: 1.5) { + .icheckbox_square-grey, + .iradio_square-grey { + background-image: url(grey@2x.png); + -webkit-background-size: 240px 24px; + background-size: 240px 24px; + } +} \ No newline at end of file diff --git a/core/admin/assets/lib/icheck/jquery.icheck.min.js b/core/admin/assets/lib/icheck/jquery.icheck.min.js new file mode 100644 index 0000000000..a3af264055 --- /dev/null +++ b/core/admin/assets/lib/icheck/jquery.icheck.min.js @@ -0,0 +1,11 @@ +/*! + * iCheck v0.8.5 jQuery plugin, http://git.io/uhUPMA + */ +(function(f,m,z,u,k,r,l,n,D,t,v,s){function A(a,c,j){var d=a[0],b=/ble/.test(j)?r:k;active="update"==j?{checked:d[k],disabled:d[r]}:d[b];if(/^ch|di/.test(j)&&!active)w(a,b);else if(/^un|en/.test(j)&&active)x(a,b);else if("update"==j)for(var b in active)active[b]?w(a,b,!0):x(a,b,!0);else if(!c||"toggle"==j)c||a.trigger("ifClicked"),active?d[l]!==u&&x(a,b):w(a,b)}function w(a,c,j){var d=a[0],b=a.parent(),E=c==r?"enabled":"un"+k,n=e(a,E+g(d[l])),h=e(a,c+g(d[l]));if(!0!==d[c]&&!j&&(d[c]=!0,a.trigger("ifChanged").trigger("if"+ + g(c)),c==k&&d[l]==u&&d.name)){j=a.closest("form");var p='input[name="'+d.name+'"]',p=j.length?j.find(p):f(p);p.each(function(){this!==d&&f(this).data(m)&&x(f(this),c)})}d[r]&&e(a,s,!0)&&b.find("."+m+"-helper").css(s,"default");b[t](h||e(a,c));b[v](n||e(a,E)||"")}function x(a,c,j){var d=a[0],b=a.parent(),f=c==r?"enabled":"un"+k,n=e(a,f+g(d[l])),h=e(a,c+g(d[l]));!1!==d[c]&&!j&&(d[c]=!1,a.trigger("ifChanged").trigger("if"+g(f)));!d[r]&&e(a,s,!0)&&b.find("."+m+"-helper").css(s,"pointer");b[v](h||e(a, + c)||"");b[t](n||e(a,f))}function F(a,c){a.data(m)&&(a.parent().html(a.attr("style",a.data(m).s||"").trigger(c||"")),a.off(".i").unwrap(),f('label[for="'+a[0].id+'"]').add(a.closest("label")).off(".i"))}function e(a,c,f){if(a.data(m))return a.data(m).o[c+(f?"":"Class")]}function g(a){return a.charAt(0).toUpperCase()+a.slice(1)}f.fn[m]=function(a,c){var j=navigator.userAgent,d=/ipad|iphone|ipod/i.test(j),b=":"+z+", :"+u,e=f(),g=function(a){a.each(function(){var a=f(this);e=a.is(b)?e.add(a):e.add(a.find(b))})}; + if(/^(check|uncheck|toggle|disable|enable|update|destroy)$/.test(a))return g(this),e.each(function(){var d=f(this);"destroy"==a?F(d,"ifDestroyed"):A(d,!0,a);f.isFunction(c)&&c()});if("object"==typeof a||!a){var h=f.extend({checkedClass:k,disabledClass:r,labelHover:!0},a),p=h.handle,s=h.hoverClass||"hover",I=h.focusClass||"focus",G=h.activeClass||"active",H=!!h.labelHover,C=h.labelHoverClass||"hover",y=(""+h.increaseArea).replace("%","")|0;if(p==z||p==u)b=":"+p;-50>y&&(y=-50);g(this);return e.each(function(){var a= + f(this);F(a);var c=this,b=c.id,e=-y+"%",g=100+2*y+"%",g={position:"absolute",top:e,left:e,display:"block",width:g,height:g,margin:0,padding:0,background:"#fff",border:0,opacity:0},e=d||/android|blackberry|windows phone|opera mini/i.test(j)?{position:"absolute",visibility:"hidden"}:y?g:{position:"absolute",opacity:0},p=c[l]==z?h.checkboxClass||"i"+z:h.radioClass||"i"+u,B=f('label[for="'+b+'"]').add(a.closest("label")),q=a.wrap('
').trigger("ifCreated").parent().append(h.insert), + g=f('').css(g).appendTo(q);a.data(m,{o:h,s:a.attr("style")}).css(e);h.inheritClass&&q[t](c.className);h.inheritID&&b&&q.attr("id",m+"-"+b);"static"==q.css("position")&&q.css("position","relative");A(a,!0,"update");if(B.length)B.on(n+".i mouseenter.i mouseleave.i "+D,function(b){var e=b[l],g=f(this);if(!c[r])if(e==n?A(a,!1,!0):H&&(/ve|nd/.test(e)?(q[v](s),g[v](C)):(q[t](s),g[t](C))),d)b.stopPropagation();else return!1});a.on(n+".i focus.i blur.i keyup.i keydown.i keypress.i", + function(b){var d=b[l];b=b.keyCode;if(d==n)return!1;if("keydown"==d&&32==b)return c[l]==u&&c[k]||(c[k]?x(a,k):w(a,k)),!1;if("keyup"==d&&c[l]==u)!c[k]&&w(a,k);else if(/us|ur/.test(d))q["blur"==d?v:t](I)});g.on(n+" mousedown mouseup mouseover mouseout "+D,function(b){var e=b[l],f=/wn|up/.test(e)?G:s;if(!c[r]){if(e==n)A(a,!1,!0);else{if(/wn|er|in/.test(e))q[t](f);else q[v](f+" "+G);if(B.length&&H&&f==s)B[/ut|nd/.test(e)?v:t](C)}if(d)b.stopPropagation();else return!1}})})}return this}})(jQuery,"iCheck", + "checkbox","radio","checked","disabled","type","click","touchbegin.i touchend.i","addClass","removeClass","cursor"); \ No newline at end of file diff --git a/core/admin/assets/sass/layouts/settings.scss b/core/admin/assets/sass/layouts/settings.scss index ae0a6aa5b0..3f495c3fd4 100644 --- a/core/admin/assets/sass/layouts/settings.scss +++ b/core/admin/assets/sass/layouts/settings.scss @@ -219,6 +219,89 @@ padding:40px; @include breakpoint($netbook) { padding-left:15px; } @include breakpoint($letterbox) { top: 0; } + + .sub{ + color: rgb(158, 157, 149); + padding-bottom: 20px; + -moz-border-bottom-colors: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + border-color: -moz-use-text-color -moz-use-text-color #EDECE4; + border-image: none; + border-right: 0 none; + border-style: none none solid; + border-width: 0 0 1px; + margin-bottom: 0px; + } + ul.users{ + list-style: none; + padding: 0px; + margin-top: 0px; + width: 75%; + clear: both; + li{ + display: block; + width: 100%; + padding: 20px; + @include box-sizing(border-box); + -moz-border-bottom-colors: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + border-color: -moz-use-text-color -moz-use-text-color #EDECE4; + border-image: none; + border-right: 0 none; + border-style: none none solid; + border-width: 0 0 1px; + + &:last-child{ + border: none; + } + .user_image{ + float: left; + width: 40px; + height: 40px; + margin-right: 17px; + background-color: #ccc; + @include border-radius(20px); + + img{ + width: 40px; + height: 40px; + @include border-radius(20px); + } + } + + .user_info{ + float: left; + span{ + display: block; + line-height: 1em; + &.name{ + margin-top: 0.4em; + font-weight: bold; + font-size: 1.2em; + } + } + } + + label{ + float: right; + color: #fff; + padding: 4px 8px; + margin-right: 20px; + &.admin{ + background-color: #DE523A; + } + + &.editor{ + background-color: #4A8CBD; + } + } + } + + } } }//.settings-content diff --git a/core/admin/views/default.hbs b/core/admin/views/default.hbs index c30c791654..23c133b076 100644 --- a/core/admin/views/default.hbs +++ b/core/admin/views/default.hbs @@ -24,11 +24,13 @@ + + {{> navbar}} diff --git a/core/admin/views/settings.hbs b/core/admin/views/settings.hbs index e1c1e42dd3..7105f608ad 100644 --- a/core/admin/views/settings.hbs +++ b/core/admin/views/settings.hbs @@ -162,7 +162,39 @@
- users +
Invited Users
+
    +
  • +
    + +
  • +
+
Active Users
+
    +
  • +
    + user +
    + + +
  • +
  • +
    + user +
    + + +
  • +
diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json deleted file mode 100644 index 0e87e142c9..0000000000 --- a/npm-shrinkwrap.json +++ /dev/null @@ -1,315 +0,0 @@ -{ - "name": "tryghost", - "version": "0.0.1", - "dependencies": { - "express": { - "version": "3.1.0", - "from": "express@3.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-3.1.0.tgz", - "dependencies": { - "connect": { - "version": "2.7.2", - "from": "connect@2.7.2", - "resolved": "https://registry.npmjs.org/connect/-/connect-2.7.2.tgz", - "dependencies": { - "qs": { - "version": "0.5.1", - "from": "qs@0.5.1" - }, - "formidable": { - "version": "1.0.11", - "from": "formidable@1.0.11" - }, - "bytes": { - "version": "0.1.0", - "from": "bytes@0.1.0" - }, - "pause": { - "version": "0.0.1", - "from": "pause@0.0.1" - } - } - }, - "commander": { - "version": "0.6.1", - "from": "commander@0.6.1" - }, - "range-parser": { - "version": "0.0.4", - "from": "range-parser@0.0.4" - }, - "mkdirp": { - "version": "0.3.3", - "from": "mkdirp@0.3.3" - }, - "cookie": { - "version": "0.0.5", - "from": "cookie@0.0.5" - }, - "buffer-crc32": { - "version": "0.1.1", - "from": "buffer-crc32@0.1.1" - }, - "fresh": { - "version": "0.1.0", - "from": "fresh@0.1.0" - }, - "methods": { - "version": "0.0.1", - "from": "methods@0.0.1" - }, - "send": { - "version": "0.1.0", - "from": "send@0.1.0", - "dependencies": { - "mime": { - "version": "1.2.6", - "from": "mime@1.2.6" - } - } - }, - "cookie-signature": { - "version": "0.0.1", - "from": "cookie-signature@0.0.1", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-0.0.1.tgz" - }, - "debug": { - "version": "0.7.2", - "from": "debug@*" - } - } - }, - "express-hbs": { - "version": "0.1.3-pre", - "from": "express-hbs@*", - "resolved": "https://registry.npmjs.org/express-hbs/-/express-hbs-0.1.3-pre.tgz" - }, - "connect-flash": { - "version": "0.1.0", - "from": "connect-flash@", - "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.0.tgz" - }, - "css": { - "version": "1.0.7", - "from": "css@*", - "resolved": "https://registry.npmjs.org/css/-/css-1.0.7.tgz", - "dependencies": { - "css-parse": { - "version": "1.0.4", - "from": "css-parse@1.0.4", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz" - }, - "css-stringify": { - "version": "1.0.4", - "from": "css-stringify@1.0.4", - "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.4.tgz" - } - } - }, - "moment": { - "version": "2.0.0", - "from": "moment@*", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.0.0.tgz" - }, - "underscore": { - "version": "1.4.4", - "from": "underscore@*", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz" - }, - "nodeunit": { - "version": "0.7.4", - "from": "nodeunit@", - "resolved": "https://registry.npmjs.org/nodeunit/-/nodeunit-0.7.4.tgz", - "dependencies": { - "tap": { - "version": "0.4.0", - "from": "tap@>=0.2.3", - "resolved": "https://registry.npmjs.org/tap/-/tap-0.4.0.tgz", - "dependencies": { - "inherits": { - "version": "1.0.0" - }, - "yamlish": { - "version": "0.0.5" - }, - "slide": { - "version": "1.1.3", - "from": "slide@*", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.3.tgz" - }, - "runforcover": { - "version": "0.0.2", - "from": "runforcover@~0.0.2", - "resolved": "https://registry.npmjs.org/runforcover/-/runforcover-0.0.2.tgz", - "dependencies": { - "bunker": { - "version": "0.1.2", - "from": "bunker@0.1.X", - "resolved": "https://registry.npmjs.org/bunker/-/bunker-0.1.2.tgz", - "dependencies": { - "burrito": { - "version": "0.2.12", - "from": "burrito@>=0.2.5 <0.3", - "resolved": "https://registry.npmjs.org/burrito/-/burrito-0.2.12.tgz", - "dependencies": { - "traverse": { - "version": "0.5.2", - "from": "traverse@~0.5.1", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.5.2.tgz" - }, - "uglify-js": { - "version": "1.1.1", - "from": "uglify-js@~1.1.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.1.1.tgz" - } - } - } - } - } - } - }, - "nopt": { - "version": "2.1.1", - "from": "nopt@~2", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.1.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.4", - "from": "abbrev@1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz" - } - } - }, - "mkdirp": { - "version": "0.3.5", - "from": "mkdirp@~0.3" - }, - "difflet": { - "version": "0.2.3", - "from": "difflet@~0.2.0", - "resolved": "https://registry.npmjs.org/difflet/-/difflet-0.2.3.tgz", - "dependencies": { - "traverse": { - "version": "0.6.3", - "from": "traverse@0.6.x", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.3.tgz" - }, - "charm": { - "version": "0.0.8", - "from": "charm@0.0.x", - "resolved": "https://registry.npmjs.org/charm/-/charm-0.0.8.tgz" - } - } - }, - "deep-equal": { - "version": "0.0.0", - "from": "deep-equal@~0.0.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.0.0.tgz" - }, - "buffer-equal": { - "version": "0.0.0", - "from": "buffer-equal@~0.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.0.tgz" - }, - "glob": { - "version": "3.1.21", - "from": "glob@~3.1.14", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "dependencies": { - "minimatch": { - "version": "0.2.11", - "from": "minimatch@~0.2.11", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.11.tgz", - "dependencies": { - "lru-cache": { - "version": "2.2.2", - "from": "lru-cache@2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.2.tgz" - }, - "sigmund": { - "version": "1.0.0", - "from": "sigmund@~1.0.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz" - } - } - }, - "graceful-fs": { - "version": "1.2.0", - "from": "graceful-fs@~1.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.0.tgz" - }, - "inherits": { - "version": "1.0.0", - "from": "inherits@1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz" - } - } - } - } - } - } - }, - "showdown": { - "version": "0.3.1", - "from": "showdown@*", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-0.3.1.tgz" - }, - "sqlite3": { - "version": "2.1.7", - "from": "sqlite3@" - }, - "jugglingdb": { - "version": "0.2.0-29", - "from": "jugglingdb@0.2.0-29", - "resolved": "https://registry.npmjs.org/jugglingdb/-/jugglingdb-0.2.0-29.tgz", - "dependencies": { - "inflection": { - "version": "1.2.5", - "from": "inflection@~1.2.5" - } - } - }, - "jugglingdb-sqlite3": { - "version": "0.0.2", - "from": "jugglingdb-sqlite3@0.0.2", - "resolved": "https://registry.npmjs.org/jugglingdb-sqlite3/-/jugglingdb-sqlite3-0.0.2.tgz", - "dependencies": { - "jugglingdb": { - "version": "0.2.0-29", - "from": "jugglingdb@0.2.0-29", - "resolved": "https://registry.npmjs.org/jugglingdb/-/jugglingdb-0.2.0-29.tgz", - "dependencies": { - "inflection": { - "version": "1.2.5", - "from": "inflection@~1.2.5" - } - } - } - } - }, - "handlebars": { - "version": "1.0.10", - "from": "handlebars@*", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-1.0.10.tgz", - "dependencies": { - "optimist": { - "version": "0.3.5", - "from": "optimist@~0.3", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.5.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "from": "wordwrap@~0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" - } - } - }, - "uglify-js": { - "version": "1.2.6", - "from": "uglify-js@~1.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.6.tgz" - } - } - } - } -}