helios_aim 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +173 -0
- data/LICENSE +19 -0
- data/README.md +363 -0
- data/Rakefile +10 -0
- data/bin/helios +20 -0
- data/helios_aim.gemspec +47 -0
- data/lib/helios.rb +27 -0
- data/lib/helios/backend.rb +64 -0
- data/lib/helios/backend/data.rb +40 -0
- data/lib/helios/backend/in-app-purchase.rb +43 -0
- data/lib/helios/backend/newsstand.rb +97 -0
- data/lib/helios/backend/passbook.rb +41 -0
- data/lib/helios/backend/push-notification.rb +110 -0
- data/lib/helios/commands.rb +4 -0
- data/lib/helios/commands/console.rb +21 -0
- data/lib/helios/commands/link.rb +19 -0
- data/lib/helios/commands/new.rb +76 -0
- data/lib/helios/commands/server.rb +52 -0
- data/lib/helios/frontend.rb +66 -0
- data/lib/helios/frontend/fonts/icons.eot +0 -0
- data/lib/helios/frontend/fonts/icons.ttf +0 -0
- data/lib/helios/frontend/fonts/icons.woff +0 -0
- data/lib/helios/frontend/images/bg.jpg +0 -0
- data/lib/helios/frontend/images/helios.svg +33 -0
- data/lib/helios/frontend/javascripts/helios.coffee +72 -0
- data/lib/helios/frontend/javascripts/helios/collections.coffee +99 -0
- data/lib/helios/frontend/javascripts/helios/models.coffee +23 -0
- data/lib/helios/frontend/javascripts/helios/router.coffee +50 -0
- data/lib/helios/frontend/javascripts/helios/views.coffee +307 -0
- data/lib/helios/frontend/javascripts/vendor/backbone.datagrid.js +662 -0
- data/lib/helios/frontend/javascripts/vendor/backbone.js +1487 -0
- data/lib/helios/frontend/javascripts/vendor/backbone.paginator.js +1046 -0
- data/lib/helios/frontend/javascripts/vendor/codemirror.javascript.js +411 -0
- data/lib/helios/frontend/javascripts/vendor/codemirror.js +3047 -0
- data/lib/helios/frontend/javascripts/vendor/date.js +104 -0
- data/lib/helios/frontend/javascripts/vendor/foundation.js +331 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.alerts.js +50 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.clearing.js +478 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.cookie.js +74 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.dropdown.js +122 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.forms.js +403 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.joyride.js +613 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.magellan.js +130 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.orbit.js +355 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.placeholder.js +159 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.reveal.js +272 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.section.js +183 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.tooltips.js +195 -0
- data/lib/helios/frontend/javascripts/vendor/foundation/foundation.topbar.js +208 -0
- data/lib/helios/frontend/javascripts/vendor/jquery.js +9597 -0
- data/lib/helios/frontend/javascripts/vendor/jquery/jquery.fileupload-ui.js +807 -0
- data/lib/helios/frontend/javascripts/vendor/jquery/jquery.fileupload.js +1201 -0
- data/lib/helios/frontend/javascripts/vendor/jquery/jquery.ui.widget.js +530 -0
- data/lib/helios/frontend/javascripts/vendor/linkheaders.js +117 -0
- data/lib/helios/frontend/javascripts/vendor/underscore.js +1227 -0
- data/lib/helios/frontend/stylesheets/_codemirror.sass +219 -0
- data/lib/helios/frontend/stylesheets/_fonts.sass +80 -0
- data/lib/helios/frontend/stylesheets/_iphone.sass +141 -0
- data/lib/helios/frontend/stylesheets/_settings.scss +989 -0
- data/lib/helios/frontend/stylesheets/screen.sass +187 -0
- data/lib/helios/frontend/templates/data/entities.jst.tpl +11 -0
- data/lib/helios/frontend/templates/in-app-purchase/receipts.jst.tpl +11 -0
- data/lib/helios/frontend/templates/navigation.jst.tpl +31 -0
- data/lib/helios/frontend/templates/newsstand/issues.jst.tpl +16 -0
- data/lib/helios/frontend/templates/newsstand/new.jst.tpl +28 -0
- data/lib/helios/frontend/templates/passbook/passes.jst.tpl +11 -0
- data/lib/helios/frontend/templates/push-notification/compose.jst.tpl +70 -0
- data/lib/helios/frontend/templates/push-notification/devices.jst.tpl +17 -0
- data/lib/helios/frontend/views/index.haml +22 -0
- data/lib/helios/templates/.env.erb +1 -0
- data/lib/helios/templates/.gitignore +3 -0
- data/lib/helios/templates/Gemfile.erb +10 -0
- data/lib/helios/templates/Procfile.erb +1 -0
- data/lib/helios/templates/README.md.erb +4 -0
- data/lib/helios/templates/config.ru.erb +11 -0
- data/lib/helios/version.rb +3 -0
- metadata +475 -0
@@ -0,0 +1,187 @@
|
|
1
|
+
@import "compass"
|
2
|
+
+global-reset
|
3
|
+
|
4
|
+
@mixin helvetica-font-stack
|
5
|
+
font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif
|
6
|
+
|
7
|
+
@mixin meslo-font-stack
|
8
|
+
font-family: "Meslo", Menlo, Monaco, monospace
|
9
|
+
|
10
|
+
@import "./settings"
|
11
|
+
@import "./fonts"
|
12
|
+
@import "./iphone"
|
13
|
+
@import "./codemirror"
|
14
|
+
|
15
|
+
@import "foundation"
|
16
|
+
|
17
|
+
body
|
18
|
+
-webkit-text-stroke: 1px transparent
|
19
|
+
@media only screen and (max-device-width:480px)
|
20
|
+
body
|
21
|
+
-webkit-text-stroke: 0 black
|
22
|
+
|
23
|
+
[role="application"]
|
24
|
+
+grid-row
|
25
|
+
|
26
|
+
[role="banner"]
|
27
|
+
+grid-row($behavior: nest-collapse)
|
28
|
+
|
29
|
+
#logo
|
30
|
+
+helvetica-font-stack
|
31
|
+
font-weight: 700
|
32
|
+
text-align: left
|
33
|
+
+grid-column(2, $float: left)
|
34
|
+
padding-left: 13px
|
35
|
+
|
36
|
+
[role="navigation"]
|
37
|
+
+grid-row($behavior: nest-collapse)
|
38
|
+
+grid-column(10, $float: right)
|
39
|
+
|
40
|
+
ul
|
41
|
+
float: right !important
|
42
|
+
margin-top: 10px
|
43
|
+
|
44
|
+
li, a
|
45
|
+
color: #222
|
46
|
+
|
47
|
+
li
|
48
|
+
padding: 0
|
49
|
+
|
50
|
+
a
|
51
|
+
display: block
|
52
|
+
text-align: left
|
53
|
+
padding: 1em 0.5em 2em 0.6em
|
54
|
+
height: 2em
|
55
|
+
|
56
|
+
i
|
57
|
+
font-size: 1.5em
|
58
|
+
float: left
|
59
|
+
padding-right: 20px
|
60
|
+
|
61
|
+
[role="main"]
|
62
|
+
+grid-row($behavior: nest-collapse)
|
63
|
+
|
64
|
+
.master
|
65
|
+
+grid-column(12, $float: left)
|
66
|
+
|
67
|
+
.detail
|
68
|
+
+panel
|
69
|
+
+grid-column(4, $float: right, $last-column: true)
|
70
|
+
float: right !important
|
71
|
+
|
72
|
+
.detail + .master
|
73
|
+
+grid-column(8, $float: left)
|
74
|
+
|
75
|
+
.master
|
76
|
+
table
|
77
|
+
+border-radius(8px)
|
78
|
+
display: block
|
79
|
+
table-layout: fixed
|
80
|
+
width: 100%
|
81
|
+
overflow: auto
|
82
|
+
|
83
|
+
th
|
84
|
+
font-weight: 600
|
85
|
+
color: #333
|
86
|
+
|
87
|
+
tr td
|
88
|
+
max-width: 40em
|
89
|
+
white-space: nowrap
|
90
|
+
overflow: auto
|
91
|
+
|
92
|
+
div
|
93
|
+
max-height: 4.5em
|
94
|
+
overflow: auto
|
95
|
+
white-space: pre-wrap
|
96
|
+
|
97
|
+
.pagination
|
98
|
+
+grid-row($behavior: nest-collapse)
|
99
|
+
+pagination
|
100
|
+
|
101
|
+
display: none
|
102
|
+
|
103
|
+
ul
|
104
|
+
+grid-column(12, $center: true)
|
105
|
+
|
106
|
+
|
107
|
+
#datagrid
|
108
|
+
table + p
|
109
|
+
width: 100%
|
110
|
+
text-align: center
|
111
|
+
padding: 2em
|
112
|
+
font-size: 2em
|
113
|
+
|
114
|
+
.detail
|
115
|
+
|
116
|
+
form
|
117
|
+
fieldset
|
118
|
+
border: 0
|
119
|
+
padding: 0
|
120
|
+
ol
|
121
|
+
list-style: none
|
122
|
+
padding: 0
|
123
|
+
margin: 0
|
124
|
+
|
125
|
+
li
|
126
|
+
+grid-row
|
127
|
+
|
128
|
+
button, input[type="submit"]
|
129
|
+
+button
|
130
|
+
|
131
|
+
.auxiliary
|
132
|
+
+grid-row($behavior: nest-collapse)
|
133
|
+
margin: 10px 0
|
134
|
+
|
135
|
+
h2
|
136
|
+
width: 200px
|
137
|
+
float: left
|
138
|
+
margin-left: 15px
|
139
|
+
|
140
|
+
button, input, form
|
141
|
+
float: right !important
|
142
|
+
|
143
|
+
.filter input
|
144
|
+
width: 300px
|
145
|
+
margin-top: 5px
|
146
|
+
margin-left: 20px
|
147
|
+
margin-right: 15px
|
148
|
+
|
149
|
+
button, button:hover, .button, .button:hover
|
150
|
+
color: #222
|
151
|
+
|
152
|
+
&.dropdown
|
153
|
+
text-align: left !important
|
154
|
+
|
155
|
+
.dropdown.button:before
|
156
|
+
border-color: #222 transparent transparent transparent !important
|
157
|
+
|
158
|
+
#entities-dropdown
|
159
|
+
float: right
|
160
|
+
width: 300px
|
161
|
+
margin-right: 15px
|
162
|
+
|
163
|
+
#entities
|
164
|
+
margin-left: -86px
|
165
|
+
font-size: 1.5em
|
166
|
+
|
167
|
+
a
|
168
|
+
display: block
|
169
|
+
|
170
|
+
#compose-modal
|
171
|
+
width: 90%
|
172
|
+
left: 45%
|
173
|
+
top: 30px
|
174
|
+
|
175
|
+
.iphone
|
176
|
+
float: right
|
177
|
+
|
178
|
+
form
|
179
|
+
float: left
|
180
|
+
width: 500px
|
181
|
+
|
182
|
+
fieldset
|
183
|
+
border: none
|
184
|
+
padding: 0
|
185
|
+
|
186
|
+
legend
|
187
|
+
display: none
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div class="auxiliary">
|
2
|
+
<h2>Data</h2>
|
3
|
+
<a id="entities-dropdown" data-dropdown="entities" class="button dropdown">Entities</a>
|
4
|
+
<ul id="entities" class="f-dropdown">
|
5
|
+
<% _.each(entities.models, function(entity) { %>
|
6
|
+
<li><a href="#<%= entity.url() %>"><%= entity.get('name') %></a></li>
|
7
|
+
<% }) %>
|
8
|
+
</ul>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<div id="datagrid" class="master"></div>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<ul class="button-group">
|
2
|
+
<% if(Helios.services['data']) { %>
|
3
|
+
<li class="button">
|
4
|
+
<a href="#data"><i class="data"/> Data</a>
|
5
|
+
</li>
|
6
|
+
<% } %>
|
7
|
+
|
8
|
+
<% if(Helios.services['push-notification']) { %>
|
9
|
+
<li class="button">
|
10
|
+
<a href="#push-notification"><i class="push-notification"/> Push Notification</a>
|
11
|
+
</li>
|
12
|
+
<% } %>
|
13
|
+
|
14
|
+
<% if(Helios.services['in-app-purchase']) { %>
|
15
|
+
<li class="button">
|
16
|
+
<a href="#in-app-purchase"><i class="in-app-purchase"/> In-App Purchase</a>
|
17
|
+
</li>
|
18
|
+
<% } %>
|
19
|
+
|
20
|
+
<% if(Helios.services['passbook']) { %>
|
21
|
+
<li class="button">
|
22
|
+
<a href="#passbook"><i class="passbook"/> Passbook</a>
|
23
|
+
</li>
|
24
|
+
<% } %>
|
25
|
+
|
26
|
+
<% if(Helios.services['newsstand']) { %>
|
27
|
+
<li class="button">
|
28
|
+
<a href="#newsstand"><i class="data"/> Newsstand</a>
|
29
|
+
</li>
|
30
|
+
<% } %>
|
31
|
+
</ul>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<div class="auxiliary">
|
2
|
+
<h2>Issues</h2>
|
3
|
+
|
4
|
+
<form class="filter">
|
5
|
+
<input type="text" placeholder="Filter Issues..." value=""/>
|
6
|
+
</form>
|
7
|
+
|
8
|
+
<button class="button" data-reveal-id="new-issue-modal">Create</button>
|
9
|
+
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class="master">
|
13
|
+
<div id="datagrid"></div>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<div id="new-issue-modal" class="reveal-modal"></div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<h1>New Issue</h1>
|
2
|
+
|
3
|
+
<form id="new" action="<%= Helios.services['newsstand']%>/issues" method="post" enctype="multipart/form-data">
|
4
|
+
<ol>
|
5
|
+
<li>
|
6
|
+
<label>Name</lable>
|
7
|
+
<input type="text" name="name"/>
|
8
|
+
</li>
|
9
|
+
<li>
|
10
|
+
<label>Summary</lable>
|
11
|
+
<textarea name="summary"/>
|
12
|
+
</li>
|
13
|
+
<li>
|
14
|
+
<label>Covers</lable>
|
15
|
+
<input type="file" name="covers[]" multiple/>
|
16
|
+
</li>
|
17
|
+
<li>
|
18
|
+
<label>Assets</lable>
|
19
|
+
<input type="file" name="assets[]" multiple/>
|
20
|
+
</li>
|
21
|
+
<li>
|
22
|
+
<label>Published</lable>
|
23
|
+
<input type="datetime-local" name="published_at"/>
|
24
|
+
</li>
|
25
|
+
</ol>
|
26
|
+
|
27
|
+
<button id="create" type="button">Create</button>
|
28
|
+
</form>
|
@@ -0,0 +1,70 @@
|
|
1
|
+
<header>
|
2
|
+
<h1>Send a Push Notification</h1>
|
3
|
+
</header>
|
4
|
+
|
5
|
+
<form id="compose">
|
6
|
+
<!-- <fieldset id="recipients">
|
7
|
+
<legend>Recipients</legend>
|
8
|
+
|
9
|
+
<ol>
|
10
|
+
<li>
|
11
|
+
<input type="radio" name="recipients" value="all" id="recipients[all]"/>
|
12
|
+
<label for="recipients[all]">All Devices</label>
|
13
|
+
</li>
|
14
|
+
<li>
|
15
|
+
<input type="radio" name="recipients" value="specified" id="recipients[specified]"/>
|
16
|
+
<label for="recipients[specified]">Specified Devices</label>
|
17
|
+
<textarea id="tokens" name="tokens" rows="3", cols="50"></textarea>
|
18
|
+
</li>
|
19
|
+
</ol>
|
20
|
+
</fieldset> -->
|
21
|
+
|
22
|
+
<fieldset class="message">
|
23
|
+
<legend>Payload</legend>
|
24
|
+
|
25
|
+
<div class="span7">
|
26
|
+
<textarea id="payload" name="payload" rows="4" cols="50">
|
27
|
+
{
|
28
|
+
"aps": {
|
29
|
+
"alert": "Lorem ipsum dolar sit amet.",
|
30
|
+
"badge": 0
|
31
|
+
}
|
32
|
+
}</textarea>
|
33
|
+
|
34
|
+
<div class="alert">
|
35
|
+
<strong></strong> : <span></span>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</fieldset>
|
39
|
+
|
40
|
+
<hr/>
|
41
|
+
|
42
|
+
<button id="send" type="button">Send Push Notification</button>
|
43
|
+
</form>
|
44
|
+
|
45
|
+
<figure class="iphone preview">
|
46
|
+
<header>
|
47
|
+
<figure class="status">
|
48
|
+
<span class="signal">▁</span>
|
49
|
+
<span class="carrier">Carrier</span>
|
50
|
+
<span class="battery">100%</span>
|
51
|
+
</figure>
|
52
|
+
|
53
|
+
<time>
|
54
|
+
<span class="time">9:04</span>
|
55
|
+
<span class="date">Thursday, November 29</span>
|
56
|
+
</time>
|
57
|
+
</header>
|
58
|
+
|
59
|
+
<figure class="notification">
|
60
|
+
<h1>App Name</h1>
|
61
|
+
<p></p>
|
62
|
+
</figure>
|
63
|
+
|
64
|
+
<footer>
|
65
|
+
<figure class="slider">
|
66
|
+
<input type="range" value="0"></input>
|
67
|
+
<span>slide to view</span>
|
68
|
+
</figure>
|
69
|
+
</footer>
|
70
|
+
</figure>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<div class="auxiliary">
|
2
|
+
<h2>Devices</h2>
|
3
|
+
|
4
|
+
<form class="filter">
|
5
|
+
<input type="text" placeholder="Filter Devices..." value=""/>
|
6
|
+
</form>
|
7
|
+
<% if (false) { %>
|
8
|
+
<button class="button" data-reveal-id="compose-modal">Compose</button>
|
9
|
+
<% } %>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class="master">
|
13
|
+
<div id="datagrid">
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div id="compose-modal" class="reveal-modal"></div>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html{lang: "en"}
|
3
|
+
%head
|
4
|
+
%meta{charset: "utf-8"}
|
5
|
+
%meta{:'http-equiv' => "X-UA-Compatible", content: "IE=edge,chrome=1"}
|
6
|
+
%meta{name: "generator", content: "Helios #{Helios::VERSION}"}
|
7
|
+
%title Helios
|
8
|
+
%link{rel: "license", href: "http://opensource.org/licenses/MIT", :title => "MIT License"}
|
9
|
+
%link{rel: "shortcut icon", href: "data:image/x-icon;,", type: "image/x-icon"}
|
10
|
+
= css :application
|
11
|
+
|
12
|
+
%body{role: 'application', data: {version: Helios::VERSION}}
|
13
|
+
%header{role: 'banner'}
|
14
|
+
%h1#logo
|
15
|
+
%a{href: ''}
|
16
|
+
%img{src: 'images/helios.svg'}
|
17
|
+
|
18
|
+
%nav{role: 'navigation'}
|
19
|
+
|
20
|
+
%div{role: 'main'}
|
21
|
+
|
22
|
+
= js :application
|
@@ -0,0 +1 @@
|
|
1
|
+
DATABASE_URL=postgres://localhost/<%= app_name %>
|
@@ -0,0 +1 @@
|
|
1
|
+
web: bundle exec unicorn -p $PORT
|