helios_aim 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|