diff --git a/Gemfile b/Gemfile index fb86cab..47ebd95 100644 --- a/Gemfile +++ b/Gemfile @@ -12,6 +12,9 @@ group :assets do end gem 'jquery-rails' +gem 'omniauth' +gem 'omniauth-google' +gem 'omniauth-google-oauth2' group :development do gem 'sqlite3' @@ -19,5 +22,5 @@ end group :production do gem 'pg' - gem 'psych' -end \ No newline at end of file + # gem 'psych' +end \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index e578e30..32ca89e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: git://github.com/maccman/spine-rails.git - revision: 0825b5ba0f44725cc026601a1c88808f19037627 + revision: fc469c14379d57af842794d211044cce495fc9c0 specs: spine-rails (0.0.9) rails (>= 3.1.0) @@ -37,6 +37,7 @@ GEM activesupport (3.2.0.rc1) i18n (~> 0.6) multi_json (~> 1.0) + addressable (2.2.6) arel (3.0.0.rc1) builder (3.0.0) coffee-rails (3.2.0) @@ -56,6 +57,11 @@ GEM eventmachine (0.12.10) execjs (1.2.13) multi_json (~> 1.0) + faraday (0.7.5) + addressable (~> 2.2.6) + multipart-post (~> 1.1.3) + rack (>= 1.1.0, < 2) + hashie (1.2.0) hike (1.2.1) i18n (0.6.0) journey (1.0.0.rc4) @@ -69,10 +75,22 @@ GEM treetop (~> 1.4.8) mime-types (1.17.2) multi_json (1.0.4) + multipart-post (1.1.4) + oauth2 (0.5.1) + faraday (~> 0.7.4) + multi_json (~> 1.0.3) + omniauth (1.0.1) + hashie (~> 1.2) + rack + omniauth-google-oauth2 (0.1.8) + omniauth (~> 1.0) + omniauth-oauth2 + omniauth-oauth2 (1.0.0) + oauth2 (~> 0.5.0) + omniauth (~> 1.0) pg (0.12.0) rake-compiler (~> 0.7) polyglot (0.3.3) - psych (1.2.2) rack (1.3.6) rack-cache (1.1) rack (>= 0.4) @@ -130,8 +148,9 @@ DEPENDENCIES coffee-rails (~> 3.2.0) eco jquery-rails + omniauth + omniauth-google-oauth2 pg - psych rails (= 3.2.0.rc1) spine-rails! sqlite3 diff --git a/app/assets/images/blacky.png b/app/assets/images/blacky.png new file mode 100644 index 0000000..d125b4b Binary files /dev/null and b/app/assets/images/blacky.png differ diff --git a/app/assets/images/larrow.png b/app/assets/images/larrow.png index ab800b3..2156abe 100644 Binary files a/app/assets/images/larrow.png and b/app/assets/images/larrow.png differ diff --git a/app/assets/images/new.png b/app/assets/images/new.png index 1c10d24..7918876 100755 Binary files a/app/assets/images/new.png and b/app/assets/images/new.png differ diff --git a/app/assets/images/rarrow.png b/app/assets/images/rarrow.png index 8c77f83..090790e 100644 Binary files a/app/assets/images/rarrow.png and b/app/assets/images/rarrow.png differ diff --git a/app/assets/images/star.png b/app/assets/images/star.png new file mode 100755 index 0000000..e4c2a34 Binary files /dev/null and b/app/assets/images/star.png differ diff --git a/app/assets/images/starb.png b/app/assets/images/starb.png new file mode 100755 index 0000000..86167bb Binary files /dev/null and b/app/assets/images/starb.png differ diff --git a/app/assets/images/stard.png b/app/assets/images/stard.png new file mode 100755 index 0000000..d4198a4 Binary files /dev/null and b/app/assets/images/stard.png differ diff --git a/app/assets/images/whitey.png b/app/assets/images/whitey.png new file mode 100644 index 0000000..365c61a Binary files /dev/null and b/app/assets/images/whitey.png differ diff --git a/app/assets/javascripts/app/controllers/activity.js.coffee b/app/assets/javascripts/app/controllers/activity.js.coffee new file mode 100644 index 0000000..b337733 --- /dev/null +++ b/app/assets/javascripts/app/controllers/activity.js.coffee @@ -0,0 +1,10 @@ +class App.Activity extends Spine.Controller + # elements: + # '.items': items + # + # events: + # 'click .item': 'itemClick' + + constructor: -> + super + # ... \ No newline at end of file diff --git a/app/assets/javascripts/app/controllers/messages.js.coffee b/app/assets/javascripts/app/controllers/messages.js.coffee new file mode 100644 index 0000000..4d53ae8 --- /dev/null +++ b/app/assets/javascripts/app/controllers/messages.js.coffee @@ -0,0 +1,13 @@ +$ = Spine.$ + +class App.Messages extends Spine.Controller + className: 'messages' + + constructor: -> + super + @render() + + render: -> + @append new App.Messages.Aside + @append $('
').addClass('vdivide') + @append new App.Messages.Article \ No newline at end of file diff --git a/app/assets/javascripts/app/controllers/messages/article.js.coffee b/app/assets/javascripts/app/controllers/messages/article.js.coffee new file mode 100644 index 0000000..1a6ce4b --- /dev/null +++ b/app/assets/javascripts/app/controllers/messages/article.js.coffee @@ -0,0 +1,50 @@ +records = [ + { + subject: 'New Email idea', + body: 'This is the new email idea', + avatar_url: 'https://secure.gravatar.com/avatar/11d44fdc7a81963600d079813ede2b69' + }, + + { + subject: 'New Email idea', + body: 'This is the new email idea', + avatar_url: 'https://secure.gravatar.com/avatar/11d44fdc7a81963600d079813ede2b69', + me: true + } +] + +compose = { + avatar_url: 'https://secure.gravatar.com/avatar/11d44fdc7a81963600d079813ede2b69' +} + +class Item extends Spine.Controller + className: 'item' + + render: -> + @el.toggleClass('me', @record.me or false) + @html @view('messages/article/item')(@record) + +class Compose extends Spine.Controller + className: 'item me compose' + + constructor: -> + super + @render() + + render: -> + @html @view('messages/article/compose')(compose) + +class App.Messages.Article extends Spine.Controller + elements: + '.items': 'items' + + constructor: -> + super + + @replace @view('messages/article')() + + @add(records) + + add: (records) -> + for record in records + @items.append(new Item(record: record).render()) \ No newline at end of file diff --git a/app/assets/javascripts/app/controllers/messages/aside.js.coffee b/app/assets/javascripts/app/controllers/messages/aside.js.coffee new file mode 100644 index 0000000..c6e75f4 --- /dev/null +++ b/app/assets/javascripts/app/controllers/messages/aside.js.coffee @@ -0,0 +1,26 @@ +records = [ + { + subject: 'New Email idea', + body: 'This is the new email idea', + avatar_url: 'https://secure.gravatar.com/avatar/11d44fdc7a81963600d079813ede2b69' + } +] + +class Item extends Spine.Controller + className: 'item active' + + render: -> + @html @view('messages/aside/item')(@record) + +class App.Messages.Aside extends Spine.Controller + elements: + '.items': 'items' + + constructor: -> + super + @replace @view('messages/aside')() + @add(records) + + add: (records) -> + for record in records + @items.append(new Item(record: record).render()) \ No newline at end of file diff --git a/app/assets/javascripts/app/controllers/nav.js.coffee b/app/assets/javascripts/app/controllers/nav.js.coffee new file mode 100644 index 0000000..08f2885 --- /dev/null +++ b/app/assets/javascripts/app/controllers/nav.js.coffee @@ -0,0 +1,7 @@ +class App.Nav extends Spine.Controller + constructor: -> + super + @render() + + render: -> + @replace @view('nav')() \ No newline at end of file diff --git a/app/assets/javascripts/app/controllers/starred.js.coffee b/app/assets/javascripts/app/controllers/starred.js.coffee new file mode 100644 index 0000000..6615198 --- /dev/null +++ b/app/assets/javascripts/app/controllers/starred.js.coffee @@ -0,0 +1,10 @@ +class App.Starred extends Spine.Controller + # elements: + # '.items': items + # + # events: + # 'click .item': 'itemClick' + + constructor: -> + super + # ... \ No newline at end of file diff --git a/app/assets/javascripts/app/index.js.coffee b/app/assets/javascripts/app/index.js.coffee index 660b5f2..c41e7ec 100644 --- a/app/assets/javascripts/app/index.js.coffee +++ b/app/assets/javascripts/app/index.js.coffee @@ -4,6 +4,8 @@ #= require spine/manager #= require spine/ajax #= require spine/route +#= require gfx +#= require gfx/effects #= require_tree ./lib #= require_self @@ -15,10 +17,23 @@ class App extends Spine.Controller constructor: -> super - # Initialize controllers: - # @append(@items = new App.Items) - # ... + @append new App.Nav + @append new App.Stack - Spine.Route.setup() + Spine.Route.setup() + +class App.Stack extends Spine.Stack + constructor: -> + super + + @activity = new App.Activity(stack: @) + @messages = new App.Messages(stack: @) + @starred = new App.Starred(stack: @) + + @add(@activity) + @add(@messages) + @add(@starred) + + @messages.active() window.App = App \ No newline at end of file diff --git a/app/assets/javascripts/app/models/conversation.js.coffee b/app/assets/javascripts/app/models/conversation.js.coffee new file mode 100644 index 0000000..db03ecb --- /dev/null +++ b/app/assets/javascripts/app/models/conversation.js.coffee @@ -0,0 +1,3 @@ +class App.Conversation extends Spine.Model + @configure 'Conversation', 'from' + @extend Spine.Model.Ajax \ No newline at end of file diff --git a/app/assets/javascripts/app/models/message.js.coffee b/app/assets/javascripts/app/models/message.js.coffee new file mode 100644 index 0000000..5a555bf --- /dev/null +++ b/app/assets/javascripts/app/models/message.js.coffee @@ -0,0 +1,3 @@ +class App.Message extends Spine.Model + @configure 'Message', 'subject', 'body' + @extend Spine.Model.Ajax \ No newline at end of file diff --git a/app/assets/javascripts/app/views/messages/article.jst.eco b/app/assets/javascripts/app/views/messages/article.jst.eco new file mode 100644 index 0000000..b148e6f --- /dev/null +++ b/app/assets/javascripts/app/views/messages/article.jst.eco @@ -0,0 +1,8 @@ +
+
+ Archive + Activity +
+ +
+
\ No newline at end of file diff --git a/app/assets/javascripts/app/views/messages/article/compose.jst.eco b/app/assets/javascripts/app/views/messages/article/compose.jst.eco new file mode 100644 index 0000000..10b0937 --- /dev/null +++ b/app/assets/javascripts/app/views/messages/article/compose.jst.eco @@ -0,0 +1,5 @@ + + +
+ +
\ No newline at end of file diff --git a/app/assets/javascripts/app/views/messages/article/item.jst.eco b/app/assets/javascripts/app/views/messages/article/item.jst.eco new file mode 100644 index 0000000..bd0f2fe --- /dev/null +++ b/app/assets/javascripts/app/views/messages/article/item.jst.eco @@ -0,0 +1,3 @@ + +
<%= @body %>
+ \ No newline at end of file diff --git a/app/assets/javascripts/app/views/messages/aside.jst.eco b/app/assets/javascripts/app/views/messages/aside.jst.eco new file mode 100644 index 0000000..6b3c5d9 --- /dev/null +++ b/app/assets/javascripts/app/views/messages/aside.jst.eco @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/assets/javascripts/app/views/messages/aside/item.jst.eco b/app/assets/javascripts/app/views/messages/aside/item.jst.eco new file mode 100644 index 0000000..02e5b23 --- /dev/null +++ b/app/assets/javascripts/app/views/messages/aside/item.jst.eco @@ -0,0 +1,6 @@ + + +
+ <%= @subject %> + <%= @body %> +
\ No newline at end of file diff --git a/app/assets/javascripts/app/views/nav.jst.eco b/app/assets/javascripts/app/views/nav.jst.eco new file mode 100644 index 0000000..921da84 --- /dev/null +++ b/app/assets/javascripts/app/views/nav.jst.eco @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/app/assets/stylesheets/app/messages.css.styl b/app/assets/stylesheets/app/messages.css.styl new file mode 100644 index 0000000..b164a5b --- /dev/null +++ b/app/assets/stylesheets/app/messages.css.styl @@ -0,0 +1,5 @@ +@import 'mixins' + +#app .messages + box-flex(1) + hbox() diff --git a/app/assets/stylesheets/app/messages/article.css.styl b/app/assets/stylesheets/app/messages/article.css.styl new file mode 100644 index 0000000..ea1aa8d --- /dev/null +++ b/app/assets/stylesheets/app/messages/article.css.styl @@ -0,0 +1,123 @@ +@import 'mixins' + +#app .messages > article + box-flex(1) + box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.1) + background: #F4F4F4 + + > header + border-bottom: 1px solid rgba(0, 0, 0, 0.2) + vbg-gradient(lighten(#F4F4F4, 10%), darken(#F4F4F4, 5%)) + box-shadow(1px, 1px, 2px, rgba(0, 0, 0, 0.1)) + height: 35px + line-height: 35px + + font-weight: bold + text-shadow: 0 1px 1px white + font-size: 14px + + span + display: block + float: left + padding: 0 20px + cursor: pointer + border-right: 1px solid rgba(0, 0, 0, 0.15) + inset-box-shadow(1px, 0, 1px, rgba(255, 255, 255, 0.5)) + color: lighten(#52585D, 20%) + + &:active + box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.3) + border-right: 1px solid rgba(0, 0, 0, 0.2) + border-bottom: 1px solid rgba(0, 0, 0, 0.04) + + .items + padding: 25px 30px + + .item + position: relative + margin: 0 65px 15px + + img + position: absolute + top: 0 + left: -70px + width: 48px + height: 48px + border-radius(5px) + box-shadow(0px, 1px, 2px, rgba(0, 0, 0, 0.4)) + + nav + position: absolute + right: 0 + top: 0 + padding: 5px + opacity: 0 + transition(0.2s) + + .favourite + display: block + width: 15px + height: 15px + opacity: 0.7 + background: url(/assets/star.png) center center no-repeat + background-size: 15px 15px + + &:active + background-image: url(/assets/stard.png) + + &:hover nav + opacity: 1 + + .body + border-box() + padding: 12px + background: #FFF + box-shadow(0px, 1px, 2px, rgba(0, 0, 0, 0.2)) + border-radius(5px) + -webkit-user-select: text + outline: none + + &::before + content: '' + background: url(/assets/larrow.png) no-repeat center center + width: 12px + height: 22px + position: absolute + left: -12px + top: 10px + + &.compose + .body + background: lighten(#F4F4F4, 70%) + + textarea + height: 28px + border-box() + width: 100% + border: 0 + resize: none + box-shadow: none + background: transparent + padding: 0 + color: #000 + text-rendering: optimizeLegibility + -webkit-font-smoothing: antialiased + font: 15px "helvetica neue", helvetica, arial, sans-serif + + .item.me + img + left: auto + right: -70px + + .body + &::before + display: none + + &::after + content: '' + background: url(/assets/rarrow.png) no-repeat center center + width: 12px + height: 22px + position: absolute + right: -12px + top: 10px \ No newline at end of file diff --git a/app/assets/stylesheets/app/messages/aside.css.styl b/app/assets/stylesheets/app/messages/aside.css.styl new file mode 100644 index 0000000..d1d3efa --- /dev/null +++ b/app/assets/stylesheets/app/messages/aside.css.styl @@ -0,0 +1,78 @@ +@import 'mixins' + +#app .messages > aside + display: block + background: #FFF + width: 250px + overflow: auto + + .item + border-bottom: 1px solid lighten(#D1D1D1, 20%) + padding: 14px + overflow: hidden + cursor: pointer + + img + width: 38px + height: 38px + border-radius(5px) + box-shadow(0px, 1px, 2px, rgba(0, 0, 0, 0.3)) + float: left + margin-right: 13px + + .subject + ellipsis() + margin: 1px 0 2px + + .body + ellipsis() + color: lighten(#52585D, 30%) + + span + display: block + + &.active + background: lighten(#F4F4F4, 20%) + -webkit-box-shadow: inset 1px 0 2px rgba(0, 0, 0, 0.1), inset -1px 0 2px rgba(0, 0, 0, 0.1) + text-shadow: 0 1px #FFF + + header + inset-line(0.7) + vbg-gradient(lighten(#F4F4F4, 10%), darken(#F4F4F4, 5%)) + border-bottom: 1px solid lighten(#CCCCCC, 10%) + height: 35px + line-height: 35px + padding: 0 10px + -webkit-border-radius: 3px 3px 0 0 + + h2 + margin: 0 + font: 20px arial,lucida,helvetica,arial,sans-serif + font-weight: normal + text-shadow: 0 1px 0 #FFF + float: left + line-height: 36px + + img + width: 20px + height: 20px + float: right + margin: 8px 0 + cursor: pointer + + .search + padding: 8px 8px + border-bottom: 1px solid lighten(#CCCCCC, 10%) + vbg-gradient(darken(#F4F4F4, 5%), darken(#F4F4F4, 10%)) + inset-line() + display: none + + input[type=search] + box-layout() + width: 100% + outline: none + opacity: 0.6 + transition() + + &:hover + opacity: 1 \ No newline at end of file diff --git a/app/assets/stylesheets/app/nav.css.styl b/app/assets/stylesheets/app/nav.css.styl new file mode 100644 index 0000000..24e1981 --- /dev/null +++ b/app/assets/stylesheets/app/nav.css.styl @@ -0,0 +1,28 @@ +@import 'mixins' + +#app > nav.nav + display: block + width: 60px + border-box() + padding: 10px + box-shadow: inset -1px 0 2px rgba(0, 0, 0, 0.3) + border-right: 1px solid rgba(0, 0, 0, 0.2) + background: rgba(255, 255, 255, 0.2) + text-align: center + + .avatar + cursor: pointer + + img + width: 38px + height: 38px + border-radius(5px) + box-shadow(0px, 1px, 2px, rgba(0, 0, 0, 0.3)) + + .item + margin: 12px 0 + cursor: pointer + + img + width: 25px + height: 25px \ No newline at end of file diff --git a/app/assets/stylesheets/application.css.styl b/app/assets/stylesheets/application.css.styl index b24cacb..ee93edf 100644 --- a/app/assets/stylesheets/application.css.styl +++ b/app/assets/stylesheets/application.css.styl @@ -1,15 +1,17 @@ /* *= require theme *= require_self + *= require_tree ./app */ @import 'mixins' -.stack > *:not(.active) - display: none +// .stack > *:not(.active) +// display: none body, html vbox() + background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.08)), to(rgba(255, 255, 255, 0.08))), url(/assets/blacky.png) repeat #app margin: 10px @@ -17,213 +19,14 @@ body, html box-flex(1) hbox() overflow: hidden - - nav.menu - display: block - width: 60px - border-box() - padding: 10px - box-shadow: inset -1px 0 2px rgba(0, 0, 0, 0.2) - border-right: 1px solid rgba(0, 0, 0, 0.2) - background: #5E5E5E - text-align: center - - .avatar - cursor: pointer - - img - width: 38px - height: 38px - border-radius(5px) - box-shadow(0px, 1px, 2px, rgba(0, 0, 0, 0.3)) - - .item - margin: 12px 0 - cursor: pointer - - img - width: 25px - height: 25px - - nav.list - display: block - background: #FFF - width: 250px - overflow: auto - - .item - border-bottom: 1px solid lighten(#D1D1D1, 20%) - padding: 14px - overflow: hidden - cursor: pointer - - img - width: 38px - height: 38px - border-radius(5px) - box-shadow(0px, 1px, 2px, rgba(0, 0, 0, 0.3)) - float: left - margin-right: 13px - - .subject - ellipsis() - margin: 1px 0 2px - - .body - ellipsis() - color: lighten(#52585D, 30%) - - span - display: block - - &.active - background: lighten(#F4F4F4, 20%) - -webkit-box-shadow: inset 1px 0 2px rgba(0, 0, 0, 0.1), inset -1px 0 2px rgba(0, 0, 0, 0.1) - text-shadow: 0 1px #FFF - - header - inset-line(0.7) - vbg-gradient(lighten(#F4F4F4, 10%), darken(#F4F4F4, 5%)) - border-bottom: 1px solid lighten(#CCCCCC, 10%) - height: 35px - line-height: 35px - padding: 0 10px - -webkit-border-radius: 3px 3px 0 0 - - h2 - margin: 0 - font: 20px arial,lucida,helvetica,arial,sans-serif - font-weight: normal - text-shadow: 0 1px 0 #FFF - float: left - line-height: 36px - - img - width: 20px - height: 20px - float: right - margin: 8px 0 - cursor: pointer .vdivide hbg-gradient(lighten(#F4F4F4, 10%), darken(#F4F4F4, 5%)) - // hbg-gradient(#F9F9F9, #DFE0E1) width: 6px; border: 1px solid rgba(0, 0, 0, 0.1) border-width: 0 1px 0 1px border-right-color: rgba(0, 0, 0, 0.2) - // box-shadow(0, 1px, 4px, rgba(0, 0, 0, 0.4)) - article + > .stack box-flex(1) - box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.1) - background: #F4F4F4 - - .items - padding: 25px 30px - - .item - position: relative - margin: 0 65px 15px - - img - position: absolute - top: 0 - left: -70px - width: 48px - height: 48px - border-radius(5px) - box-shadow(0px, 1px, 2px, rgba(0, 0, 0, 0.4)) - - .body - border-box() - padding: 12px - background: #FFF - box-shadow(0px, 1px, 2px, rgba(0, 0, 0, 0.2)) - border-radius(5px) - -webkit-user-select: text - outline: none - - &::before - content: '' - background: url(/assets/larrow.png) no-repeat center center - width: 12px - height: 22px - position: absolute - left: -12px - top: 10px - - &.compose - .body - background: lighten(#F4F4F4, 80%) - - textarea - height: 28px - border-box() - width: 100% - border: 0 - resize: none - box-shadow: none - background: transparent - padding: 0 - color: #000 - text-rendering: optimizeLegibility - -webkit-font-smoothing: antialiased - font: 15px "helvetica neue", helvetica, arial, sans-serif - - .item.me - img - left: auto - right: -70px - - .body - &::before - display: none - - &::after - content: '' - background: url(/assets/rarrow.png) no-repeat center center - width: 12px - height: 22px - position: absolute - right: -12px - top: 10px - - - header - border-bottom: 1px solid rgba(0, 0, 0, 0.2) - vbg-gradient(lighten(#F4F4F4, 10%), darken(#F4F4F4, 5%)) - box-shadow(1px, 1px, 2px, rgba(0, 0, 0, 0.1)) - height: 35px - line-height: 35px - - font-weight: bold - text-shadow: 0 1px 1px white - font-size: 14px - - span - display: block - float: left - padding: 0 20px - cursor: pointer - border-right: 1px solid rgba(0, 0, 0, 0.15) - inset-box-shadow(1px, 0, 1px, rgba(255, 255, 255, 0.5)) - color: lighten(#52585D, 20%) - - &:active - box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.3) - border-right: 1px solid rgba(0, 0, 0, 0.2) - border-bottom: 1px solid rgba(0, 0, 0, 0.04) - - // background: #FFF - // border-radius(3px) - // - // // background: -webkit-gradient(linear, left top, left bottom, from(#FFF), color-stop(0.9, #FFF), to(lighten(#F4F4F4, 20%))) - // - // overflow: hidden - // - // - // article.article - // display: block - // padding: 15px 15px 5px 15px - // overflow: hidden \ No newline at end of file + hbox() \ No newline at end of file diff --git a/app/assets/stylesheets/scaffold.css b/app/assets/stylesheets/scaffold.css new file mode 100644 index 0000000..1ae7000 --- /dev/null +++ b/app/assets/stylesheets/scaffold.css @@ -0,0 +1,56 @@ +body { background-color: #fff; color: #333; } + +body, p, ol, ul, td { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; +} + +pre { + background-color: #eee; + padding: 10px; + font-size: 11px; +} + +a { color: #000; } +a:visited { color: #666; } +a:hover { color: #fff; background-color:#000; } + +div.field, div.actions { + margin-bottom: 10px; +} + +#notice { + color: green; +} + +.field_with_errors { + padding: 2px; + background-color: red; + display: table; +} + +#error_explanation { + width: 450px; + border: 2px solid red; + padding: 7px; + padding-bottom: 0; + margin-bottom: 20px; + background-color: #f0f0f0; +} + +#error_explanation h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 5px 15px; + font-size: 12px; + margin: -7px; + margin-bottom: 0px; + background-color: #c00; + color: #fff; +} + +#error_explanation ul li { + font-size: 12px; + list-style: square; +} diff --git a/app/controllers/authorize_controller.rb b/app/controllers/authorize_controller.rb new file mode 100644 index 0000000..55e9b39 --- /dev/null +++ b/app/controllers/authorize_controller.rb @@ -0,0 +1,16 @@ +class AuthorizeController < ApplicationController + def create + auth = request.env["omniauth.auth"] + # cookies.permanent.signed[:handle] = auth.info.nickname + redirect_to "/" + end + + def failure + raise "OAuth failure - #{params[:message]}" + end + + def destroy + reset_session + render :text => "Logged out" + end +end \ No newline at end of file diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb new file mode 100644 index 0000000..f8d41fa --- /dev/null +++ b/app/controllers/messages_controller.rb @@ -0,0 +1,48 @@ +class MessagesController < ApplicationController + # GET /messages.json + def index + @messages = Message.all + render json: @messages + end + + # GET /messages/1.json + def show + @message = Message.find(params[:id]) + render json: @message + end + + # GET /messages/new.json + def new + @message = Message.new + render json: @message + end + + # POST /messages.json + def create + @message = Message.new(params[:message]) + + if @message.save + render json: @message, status: :created, location: @message + else + render json: @message.errors, status: :unprocessable_entity + end + end + + # PUT /messages/1.json + def update + @message = Message.find(params[:id]) + + if @message.update_attributes(params[:message]) + head :no_content + else + render json: @message.errors, status: :unprocessable_entity + end + end + + # DELETE /messages/1.json + def destroy + @message = Message.find(params[:id]) + @message.destroy + head :no_content + end +end diff --git a/app/helpers/authorize_helper.rb b/app/helpers/authorize_helper.rb new file mode 100644 index 0000000..05569d8 --- /dev/null +++ b/app/helpers/authorize_helper.rb @@ -0,0 +1,2 @@ +module AuthorizeHelper +end diff --git a/app/helpers/messages_helper.rb b/app/helpers/messages_helper.rb new file mode 100644 index 0000000..f1bca9f --- /dev/null +++ b/app/helpers/messages_helper.rb @@ -0,0 +1,2 @@ +module MessagesHelper +end diff --git a/app/models/message.rb b/app/models/message.rb new file mode 100644 index 0000000..590e3e3 --- /dev/null +++ b/app/models/message.rb @@ -0,0 +1,2 @@ +class Message < ActiveRecord::Base +end diff --git a/app/views/app/index.html.erb b/app/views/app/index.html.erb index a959383..2a2b2bb 100644 --- a/app/views/app/index.html.erb +++ b/app/views/app/index.html.erb @@ -1,94 +1,4 @@ -
- - - - -
- -
-
- Archive - Convert... -
- -
-
- <%= image_tag "https://secure.gravatar.com/avatar/11d44fdc7a81963600d079813ede2b69" %> -
Is this your new email conversation idea?
-
- -
- <%= image_tag "https://secure.gravatar.com/avatar/baf018e2cc4616e4776d323215c7136c" %> -
Yup, this is it. What do you think?
-
- -
- <%= image_tag "https://secure.gravatar.com/avatar/11d44fdc7a81963600d079813ede2b69" %> -
This is the best idea in the whole world.
-
- -
- <%= image_tag "https://secure.gravatar.com/avatar/baf018e2cc4616e4776d323215c7136c" %> -
- -
-
-
-
-
+