kablam 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/kablam/ajax.js +0 -198
- data/app/assets/javascripts/kablam/{messaging.js → messaging.js.erb} +20 -3
- data/app/controllers/kablam_controller.rb +12 -0
- data/app/views/application/_flash_notice.html.erb +6 -0
- data/app/views/application/_flash_undo.html.erb +3 -0
- data/app/views/kablam/_message.html.erb +15 -0
- data/app/views/kablam/destroy.js.erb +1 -1
- data/app/views/kablam/message.js.erb +5 -0
- data/config/routes.rb +1 -0
- data/kablam.gemspec +1 -1
- data/lib/generators/kablam/templates/_message.html.erb +15 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea5aa8b0bb18d19bf0fb27248b0280fc1defc81541116db1c8f20ae78b6dcbbe
|
4
|
+
data.tar.gz: 608717219ca9f67c3bbaa551353c28d6804b6b0d172cf4ccc0980919a918369d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60958bb2d96a09fd523784bb4332f039926de3f3e4785ec8619cc46fe531b10d035681c10d7c20ee189f430e864614c41af759b3f398826bf51e170bcb6fe503
|
7
|
+
data.tar.gz: abe3ce049c4a68f68a14c1610c5d78bc52efc9a9e41d112f0fbbc12d7f0462371b1893ceaf270dbb710379de533962dd1f6575fb9a104acb53842c4bf7514558
|
@@ -6,164 +6,38 @@ function AjaxRequest() {
|
|
6
6
|
// Instance properties
|
7
7
|
// -------------------
|
8
8
|
|
9
|
-
/**
|
10
|
-
* Timeout period (in ms) until an async request will be aborted, and
|
11
|
-
* the onTimeout function will be called
|
12
|
-
*/
|
13
9
|
req.timeout = null;
|
14
|
-
|
15
|
-
/**
|
16
|
-
* Since some browsers cache GET requests via XMLHttpRequest, an
|
17
|
-
* additional parameter called AjaxRequestUniqueId will be added to
|
18
|
-
* the request URI with a unique numeric value appended so that the requested
|
19
|
-
* URL will not be cached.
|
20
|
-
*/
|
21
10
|
req.generateUniqueUrl = true;
|
22
|
-
|
23
|
-
/**
|
24
|
-
* The url that the request will be made to, which defaults to the current
|
25
|
-
* url of the window
|
26
|
-
*/
|
27
11
|
req.url = window.location.href;
|
28
|
-
|
29
|
-
/**
|
30
|
-
* The method of the request, either GET (default), POST, or HEAD
|
31
|
-
*/
|
32
12
|
req.method = "GET";
|
33
|
-
|
34
|
-
/**
|
35
|
-
* Whether or not the request will be asynchronous. In general, synchronous
|
36
|
-
* requests should not be used so this should rarely be changed from true
|
37
|
-
*/
|
38
13
|
req.async = true;
|
39
|
-
|
40
|
-
/**
|
41
|
-
* The username used to access the URL
|
42
|
-
*/
|
43
14
|
req.username = null;
|
44
|
-
|
45
|
-
/**
|
46
|
-
* The password used to access the URL
|
47
|
-
*/
|
48
15
|
req.password = null;
|
49
|
-
|
50
|
-
/**
|
51
|
-
* The parameters is an object holding name/value pairs which will be
|
52
|
-
* added to the url for a GET request or the request content for a POST request
|
53
|
-
*/
|
54
16
|
req.parameters = new Object();
|
55
|
-
|
56
|
-
/**
|
57
|
-
* The sequential index number of this request, updated internally
|
58
|
-
*/
|
59
17
|
req.requestIndex = AjaxRequest.numAjaxRequests++;
|
60
|
-
|
61
|
-
/**
|
62
|
-
* Indicates whether a response has been received yet from the server
|
63
|
-
*/
|
64
18
|
req.responseReceived = false;
|
65
|
-
|
66
|
-
/**
|
67
|
-
* The name of the group that this request belongs to, for activity
|
68
|
-
* monitoring purposes
|
69
|
-
*/
|
70
19
|
req.groupName = null;
|
71
|
-
|
72
|
-
/**
|
73
|
-
* The query string to be added to the end of a GET request, in proper
|
74
|
-
* URIEncoded format
|
75
|
-
*/
|
76
20
|
req.queryString = "";
|
77
|
-
|
78
|
-
/**
|
79
|
-
* After a response has been received, this will hold the text contents of
|
80
|
-
* the response - even in case of error
|
81
|
-
*/
|
82
21
|
req.responseText = null;
|
83
|
-
|
84
|
-
/**
|
85
|
-
* After a response has been received, this will hold the XML content
|
86
|
-
*/
|
87
22
|
req.responseXML = null;
|
88
|
-
|
89
|
-
/**
|
90
|
-
* After a response has been received, this will hold the status code of
|
91
|
-
* the response as returned by the server.
|
92
|
-
*/
|
93
23
|
req.status = null;
|
94
|
-
|
95
|
-
/**
|
96
|
-
* After a response has been received, this will hold the text description
|
97
|
-
* of the response code
|
98
|
-
*/
|
99
24
|
req.statusText = null;
|
100
|
-
|
101
|
-
/**
|
102
|
-
* An internal flag to indicate whether the request has been aborted
|
103
|
-
*/
|
104
25
|
req.aborted = false;
|
105
|
-
|
106
|
-
/**
|
107
|
-
* The XMLHttpRequest object used internally
|
108
|
-
*/
|
109
26
|
req.xmlHttpRequest = null;
|
110
27
|
|
111
28
|
// --------------
|
112
29
|
// Event handlers
|
113
30
|
// --------------
|
114
31
|
|
115
|
-
/**
|
116
|
-
* If a timeout period is set, and it is reached before a response is
|
117
|
-
* received, a function reference assigned to onTimeout will be called
|
118
|
-
*/
|
119
32
|
req.onTimeout = null;
|
120
|
-
|
121
|
-
/**
|
122
|
-
* A function reference assigned will be called when readyState=1
|
123
|
-
*/
|
124
33
|
req.onLoading = null;
|
125
|
-
|
126
|
-
/**
|
127
|
-
* A function reference assigned will be called when readyState=2
|
128
|
-
*/
|
129
34
|
req.onLoaded = null;
|
130
|
-
|
131
|
-
/**
|
132
|
-
* A function reference assigned will be called when readyState=3
|
133
|
-
*/
|
134
35
|
req.onInteractive = null;
|
135
|
-
|
136
|
-
/**
|
137
|
-
* A function reference assigned will be called when readyState=4
|
138
|
-
*/
|
139
36
|
req.onComplete = null;
|
140
|
-
|
141
|
-
/**
|
142
|
-
* A function reference assigned will be called after onComplete, if
|
143
|
-
* the statusCode=200
|
144
|
-
*/
|
145
37
|
req.onSuccess = null;
|
146
|
-
|
147
|
-
/**
|
148
|
-
* A function reference assigned will be called after onComplete, if
|
149
|
-
* the statusCode != 200
|
150
|
-
*/
|
151
38
|
req.onError = null;
|
152
|
-
|
153
|
-
/**
|
154
|
-
* If this request has a group name, this function reference will be called
|
155
|
-
* and passed the group name if this is the first request in the group to
|
156
|
-
* become active
|
157
|
-
*/
|
158
39
|
req.onGroupBegin = null;
|
159
|
-
|
160
|
-
/**
|
161
|
-
* If this request has a group name, and this request is the last request
|
162
|
-
* in the group to complete, this function reference will be called
|
163
|
-
*/
|
164
40
|
req.onGroupEnd = null;
|
165
|
-
|
166
|
-
// Get the XMLHttpRequest object itself
|
167
41
|
req.xmlHttpRequest = AjaxRequest.getXmlHttpRequest();
|
168
42
|
if (req.xmlHttpRequest==null) { return null; }
|
169
43
|
|
@@ -182,9 +56,6 @@ function AjaxRequest() {
|
|
182
56
|
// ---------------------------------------------------------------------------
|
183
57
|
// Internal event handlers that fire, and in turn fire the user event handlers
|
184
58
|
// ---------------------------------------------------------------------------
|
185
|
-
// Flags to keep track if each event has been handled, in case of
|
186
|
-
// multiple calls (some browsers may call the onreadystatechange
|
187
|
-
// multiple times for the same state)
|
188
59
|
req.onLoadingInternalHandled = false;
|
189
60
|
req.onLoadedInternalHandled = false;
|
190
61
|
req.onInteractiveInternalHandled = false;
|
@@ -287,12 +158,6 @@ function AjaxRequest() {
|
|
287
158
|
// ----------------
|
288
159
|
// Instance methods
|
289
160
|
// ----------------
|
290
|
-
/**
|
291
|
-
* The process method is called to actually make the request. It builds the
|
292
|
-
* querystring for GET requests (the content for POST requests), sets the
|
293
|
-
* appropriate headers if necessary, and calls the
|
294
|
-
* XMLHttpRequest.send() method
|
295
|
-
*/
|
296
161
|
req.process =
|
297
162
|
function() {
|
298
163
|
if (req.xmlHttpRequest!=null) {
|
@@ -323,11 +188,6 @@ function AjaxRequest() {
|
|
323
188
|
req.xmlHttpRequest.send(content);
|
324
189
|
}
|
325
190
|
};
|
326
|
-
|
327
|
-
/**
|
328
|
-
* An internal function to handle an Object argument, which may contain
|
329
|
-
* either AjaxRequest field values or parameter name/values
|
330
|
-
*/
|
331
191
|
req.handleArguments =
|
332
192
|
function(args) {
|
333
193
|
for (var i in args) {
|
@@ -340,11 +200,6 @@ function AjaxRequest() {
|
|
340
200
|
}
|
341
201
|
}
|
342
202
|
};
|
343
|
-
|
344
|
-
/**
|
345
|
-
* Returns the results of XMLHttpRequest.getAllResponseHeaders().
|
346
|
-
* Only available after a response has been returned
|
347
|
-
*/
|
348
203
|
req.getAllResponseHeaders =
|
349
204
|
function() {
|
350
205
|
if (req.xmlHttpRequest!=null) {
|
@@ -354,12 +209,6 @@ function AjaxRequest() {
|
|
354
209
|
alert("Cannot getAllResponseHeaders because a response has not yet been received");
|
355
210
|
}
|
356
211
|
};
|
357
|
-
|
358
|
-
/**
|
359
|
-
* Returns the the value of a response header as returned by
|
360
|
-
* XMLHttpRequest,getResponseHeader().
|
361
|
-
* Only available after a response has been returned
|
362
|
-
*/
|
363
212
|
req.getResponseHeader =
|
364
213
|
function(headerName) {
|
365
214
|
if (req.xmlHttpRequest!=null) {
|
@@ -377,10 +226,6 @@ function AjaxRequest() {
|
|
377
226
|
// Static methods of the AjaxRequest class
|
378
227
|
// ---------------------------------------
|
379
228
|
|
380
|
-
/**
|
381
|
-
* Returns an XMLHttpRequest object, either as a core object or an ActiveX
|
382
|
-
* implementation. If an object cannot be instantiated, it will return null;
|
383
|
-
*/
|
384
229
|
AjaxRequest.getXmlHttpRequest = function() {
|
385
230
|
if (window.XMLHttpRequest) {
|
386
231
|
return new XMLHttpRequest();
|
@@ -405,36 +250,18 @@ AjaxRequest.getXmlHttpRequest = function() {
|
|
405
250
|
}
|
406
251
|
};
|
407
252
|
|
408
|
-
/**
|
409
|
-
* See if any request is active in the background
|
410
|
-
*/
|
411
253
|
AjaxRequest.isActive = function() {
|
412
254
|
return (AjaxRequest.numActiveAjaxRequests>0);
|
413
255
|
};
|
414
256
|
|
415
|
-
/**
|
416
|
-
* Make a GET request. Pass an object containing parameters and arguments as
|
417
|
-
* the second argument.
|
418
|
-
* These areguments may be either AjaxRequest properties to set on the request
|
419
|
-
* object or name/values to set in the request querystring.
|
420
|
-
*/
|
421
257
|
AjaxRequest.get = function(args) {
|
422
258
|
AjaxRequest.doRequest("GET",args);
|
423
259
|
};
|
424
260
|
|
425
|
-
/**
|
426
|
-
* Make a POST request. Pass an object containing parameters and arguments as
|
427
|
-
* the second argument.
|
428
|
-
* These areguments may be either AjaxRequest properties to set on the request
|
429
|
-
* object or name/values to set in the request querystring.
|
430
|
-
*/
|
431
261
|
AjaxRequest.post = function(args) {
|
432
262
|
AjaxRequest.doRequest("POST",args);
|
433
263
|
};
|
434
264
|
|
435
|
-
/**
|
436
|
-
* The internal method used by the .get() and .post() methods
|
437
|
-
*/
|
438
265
|
AjaxRequest.doRequest = function(method,args) {
|
439
266
|
if (typeof(args)!="undefined" && args!=null) {
|
440
267
|
var myRequest = new AjaxRequest();
|
@@ -444,13 +271,6 @@ AjaxRequest.doRequest = function(method,args) {
|
|
444
271
|
}
|
445
272
|
} ;
|
446
273
|
|
447
|
-
/**
|
448
|
-
* Submit a form. The requested URL will be the form's ACTION, and the request
|
449
|
-
* method will be the form's METHOD.
|
450
|
-
* Returns true if the submittal was handled successfully, else false so it
|
451
|
-
* can easily be used with an onSubmit event for a form, and fallback to
|
452
|
-
* submitting the form normally.
|
453
|
-
*/
|
454
274
|
AjaxRequest.submit = function(theform, args) {
|
455
275
|
var myRequest = new AjaxRequest();
|
456
276
|
if (myRequest==null) { return false; }
|
@@ -463,13 +283,6 @@ AjaxRequest.submit = function(theform, args) {
|
|
463
283
|
return true;
|
464
284
|
};
|
465
285
|
|
466
|
-
/**
|
467
|
-
* Serialize a form into a format which can be sent as a GET string or a POST
|
468
|
-
* content.It correctly ignores disabled fields, maintains order of the fields
|
469
|
-
* as in the elements[] array. The 'file' input type is not supported, as
|
470
|
-
* its content is not available to javascript. This method is used internally
|
471
|
-
* by the submit class method.
|
472
|
-
*/
|
473
286
|
AjaxRequest.serializeForm = function(theform) {
|
474
287
|
var els = theform.elements;
|
475
288
|
var len = els.length;
|
@@ -515,17 +328,6 @@ AjaxRequest.serializeForm = function(theform) {
|
|
515
328
|
// Static Class variables
|
516
329
|
// -----------------------
|
517
330
|
|
518
|
-
/**
|
519
|
-
* The number of total AjaxRequest objects currently active and running
|
520
|
-
*/
|
521
331
|
AjaxRequest.numActiveAjaxRequests = 0;
|
522
|
-
|
523
|
-
/**
|
524
|
-
* An object holding the number of active requests for each group
|
525
|
-
*/
|
526
332
|
AjaxRequest.numActiveAjaxGroupRequests = new Object();
|
527
|
-
|
528
|
-
/**
|
529
|
-
* The total number of AjaxRequest objects instantiated
|
530
|
-
*/
|
531
333
|
AjaxRequest.numAjaxRequests = 0;
|
@@ -53,7 +53,8 @@ function UserChatSub(chat_div_id, chat_id, channel, user_id, options={}){
|
|
53
53
|
|
54
54
|
App.cable.subscriptions.create({ channel: channel, id: chat_id }, {
|
55
55
|
received: function(data) {
|
56
|
-
HtmlNode(data, options);
|
56
|
+
// HtmlNode(data, options);
|
57
|
+
RenderMessage(data);
|
57
58
|
if (data['chat']['sender_id'] != user_id) {
|
58
59
|
TopDot();
|
59
60
|
}
|
@@ -61,7 +62,23 @@ function UserChatSub(chat_div_id, chat_id, channel, user_id, options={}){
|
|
61
62
|
})
|
62
63
|
}
|
63
64
|
|
64
|
-
function
|
65
|
+
function RenderMessage(data) {
|
66
|
+
console.log(data);
|
67
|
+
AjaxRequest.post(
|
68
|
+
{
|
69
|
+
'url': '<%= Kablam::Engine.routes.url_helpers.message_path %>',
|
70
|
+
'parameters': {'message': JSON.stringify(data['chat'])},
|
71
|
+
// 'onSuccess':function(req){ insertAndExecute(target, req.responseText); }
|
72
|
+
'onSuccess': function(req){eval(req.responseText);}
|
73
|
+
}
|
74
|
+
);
|
75
|
+
}
|
76
|
+
|
77
|
+
function insertHTML(target, content, location) {
|
78
|
+
|
79
|
+
}
|
80
|
+
|
81
|
+
function HtmlNode(target, data, options={}){
|
65
82
|
options = {
|
66
83
|
outerDivClass: options.outerDivClass || "pt3 ph3 ph2-l bg-white br2 shadow1 mb3",
|
67
84
|
innerDivClass: options.innerDivClass || "dt w-100 pb2 ph2 mt2",
|
@@ -88,7 +105,7 @@ function HtmlNode(data, options={}){
|
|
88
105
|
</div>
|
89
106
|
</div>
|
90
107
|
<div class="${options.messageDivClass}"><p class="${options.messageClass}">${content}</p></div>`;
|
91
|
-
|
108
|
+
target.insertAdjacentElement('afterbegin', new_message);
|
92
109
|
}
|
93
110
|
|
94
111
|
var scrollPosition;
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'rest-client'
|
2
|
+
require 'json'
|
2
3
|
|
3
4
|
class KablamController < ApplicationController
|
4
5
|
protect_from_forgery with: :exception
|
5
6
|
before_action :set_model, only: [:create, :update, :undo, :destroy, :form]
|
6
7
|
before_action :set_object, only: [:update, :destroy]
|
7
8
|
before_action :set_undo_object, only: [:undo]
|
9
|
+
skip_before_action :verify_authenticity_token, only: [:message]
|
8
10
|
include Concerns::ApiSettings
|
9
11
|
|
10
12
|
def form
|
@@ -18,6 +20,16 @@ class KablamController < ApplicationController
|
|
18
20
|
render layout: false
|
19
21
|
end
|
20
22
|
|
23
|
+
def message
|
24
|
+
@message = JSON.parse(params[:message])
|
25
|
+
respond_to do |format|
|
26
|
+
format.js
|
27
|
+
format.html do
|
28
|
+
redirect_to request.referrer
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
21
33
|
def create
|
22
34
|
@object = @model.new(model_params)
|
23
35
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="pt3 ph3 ph2-l bg-white br2 shadow1 mb3">
|
2
|
+
<div class="dt w-100 pb2 ph2 mt2">
|
3
|
+
<div class="dtc w2 w3-ns v-mid">
|
4
|
+
<img src="<%= message['image'].blank? ? image_path('rocket2.png') : message['image'] %>" class="ba b--black-10 db br-100 w2 w3-ns h2 h3-ns"/>
|
5
|
+
</div>
|
6
|
+
<div class="dtc v-mid pl3">
|
7
|
+
<h1 class="f6 f5-ns fw6 lh-title black mv0"><%= message['username'] %></h1>
|
8
|
+
<h2 class="f6 fw4 mt0 mb0 black-60 i"><%= message['created_at'].to_time.strftime("%H:%M:%S%p %m-%d-%Y") %></h2>
|
9
|
+
<h2 class="f6 fw4 mt0 mb0 black-60 i">User Time:<%= message['user_time'].to_time.strftime("%H:%M:%S%p %m-%d-%Y") if message['user_time'].present? %></h2>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
<div class="ph3-l pb2 ">
|
13
|
+
<%= simple_format(message['content']) %>
|
14
|
+
</div>
|
15
|
+
</div>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%= hide @object %>
|
2
2
|
<% if @object.undoable? %>
|
3
3
|
<%= render_flash message: 'Deleted', partial: 'application/flash_undo',
|
4
|
-
link: button_to('Undo',
|
4
|
+
link: button_to('Undo', undo_path(@object.class.table_name, @object,
|
5
5
|
@object.model_name.singular.to_sym => { destroyed_at: nil }),
|
6
6
|
{data: { disable_with: 'Restoring…' },
|
7
7
|
class: 'no-underline mt3 f4 tc pv2 ph4 white bg-black hover-bg-green shadow-5',
|
data/config/routes.rb
CHANGED
data/kablam.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'kablam'
|
3
|
-
s.version = '0.2.
|
3
|
+
s.version = '0.2.5'
|
4
4
|
s.date = '2018-09-14'
|
5
5
|
s.summary = "Kablam! All the things you hate. But Faster."
|
6
6
|
s.description = "Gem to make development of everything in rails faster. Form creation & styling, all the resource routes, even actioncable messaging!\n {NOTE: In Development. NOT READY FOR TESTING.}"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="pt3 ph3 ph2-l bg-white br2 shadow1 mb3">
|
2
|
+
<div class="dt w-100 pb2 ph2 mt2">
|
3
|
+
<div class="dtc w2 w3-ns v-mid">
|
4
|
+
<img src="<%= message['image'].blank? ? image_path('rocket2.png') : message['image'] %>" class="ba b--black-10 db br-100 w2 w3-ns h2 h3-ns"/>
|
5
|
+
</div>
|
6
|
+
<div class="dtc v-mid pl3">
|
7
|
+
<h1 class="f6 f5-ns fw6 lh-title black mv0"><%= message['username'] %></h1>
|
8
|
+
<h2 class="f6 fw4 mt0 mb0 black-60 i"><%= message['created_at'].to_time.strftime("%H:%M:%S%p %m-%d-%Y") %></h2>
|
9
|
+
<h2 class="f6 fw4 mt0 mb0 black-60 i">User Time:<%= message['user_time'].to_time.strftime("%H:%M:%S%p %m-%d-%Y") if message['user_time'].present? %></h2>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
<div class="ph3-l pb2 ">
|
13
|
+
<%= simple_format(message['content']) %>
|
14
|
+
</div>
|
15
|
+
</div>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kablam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergio Rivas
|
@@ -67,15 +67,19 @@ files:
|
|
67
67
|
- app/.DS_Store
|
68
68
|
- app/assets/javascripts/kablam/ajax.js
|
69
69
|
- app/assets/javascripts/kablam/forms.js
|
70
|
-
- app/assets/javascripts/kablam/messaging.js
|
70
|
+
- app/assets/javascripts/kablam/messaging.js.erb
|
71
71
|
- app/assets/stylesheets/kablam.scss
|
72
72
|
- app/channels/chat_channel.rb
|
73
73
|
- app/controllers/concerns/api_settings.rb
|
74
74
|
- app/controllers/kablam_controller.rb
|
75
75
|
- app/views/.DS_Store
|
76
|
+
- app/views/application/_flash_notice.html.erb
|
77
|
+
- app/views/application/_flash_undo.html.erb
|
78
|
+
- app/views/kablam/_message.html.erb
|
76
79
|
- app/views/kablam/create.js.erb
|
77
80
|
- app/views/kablam/destroy.js.erb
|
78
81
|
- app/views/kablam/form.html.erb
|
82
|
+
- app/views/kablam/message.js.erb
|
79
83
|
- app/views/kablam/undo.js.erb
|
80
84
|
- app/views/kablam/update.js.erb
|
81
85
|
- app/views/kablam_forms/.DS_Store
|
@@ -97,6 +101,7 @@ files:
|
|
97
101
|
- lib/generators/kablam/forms_generator.rb
|
98
102
|
- lib/generators/kablam/install_generator.rb
|
99
103
|
- lib/generators/kablam/messaging_generator.rb
|
104
|
+
- lib/generators/kablam/templates/_message.html.erb
|
100
105
|
- lib/generators/kablam/templates/_sample_target_item.html.erb
|
101
106
|
- lib/generators/kablam/templates/chat.rb
|
102
107
|
- lib/generators/kablam/templates/kablam.rb
|