dashstrap 0.1.0 → 0.2.0
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/dashstrap/application.js +4 -1
- data/app/assets/javascripts/dashstrap/modules/list-view.js +0 -1
- data/app/assets/stylesheets/dashstrap/ltr/application.css +1 -0
- data/app/assets/stylesheets/dashstrap/main.css.scss +1 -0
- data/app/assets/stylesheets/dashstrap/rtl/application.css +1 -0
- data/app/views/angular/403.html +12 -0
- data/app/views/angular/404.html +11 -0
- data/app/views/angular/auth/groups/new.html.slim +12 -0
- data/app/views/angular/fields/datepicker/datepicker.html +10 -5
- data/app/views/angular/fields/datetime/date.html +7 -0
- data/app/views/angular/fields/datetime/datetime.html +5 -8
- data/app/views/angular/fields/datetime/time.html +5 -23
- data/app/views/angular/fields/file/file.html.slim +1 -0
- data/app/views/angular/fields/file/file_upload.html +1 -0
- data/app/views/angular/list-view/index.html +0 -2
- data/app/views/devise/shared/_links.erb +5 -5
- data/app/views/layouts/faalis/dashboard.html.erb +1 -0
- data/dashstrap.gemspec +2 -0
- data/lib/dashstrap/engine.rb +3 -0
- data/lib/dashstrap/version.rb +1 -1
- data/lib/dashstrap.rb +1 -0
- data/lib/generators/dashstrap/install_generator.rb +10 -0
- data/lib/generators/templates/js/list_view/details.html.erb +30 -16
- data/lib/generators/templates/js/list_view/index.html.erb +1 -0
- data/lib/generators/templates/js/list_view/partials/add_controller.js.erb +2 -2
- data/lib/generators/templates/js/list_view/partials/index_controller.js.erb +5 -1
- data/lib/tasks/grunt/Gruntfile.js +2 -2
- metadata +35 -3
- data/app/assets/stylesheets/dashstrap/rtl/#application.css# +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67a75d970b42e6bcde4d783185a504215252a98f
|
4
|
+
data.tar.gz: 8021b257f4b733337df26e29e804071dfe2eeee6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36c25625f0d58f286d136bed705a92ddba840da38999f3fde69968595ff1bcfbc11d71f068fa35122ec6560937a52ad26708ef2d314af4b784593d232d7915f5
|
7
|
+
data.tar.gz: dd2bebd265233a7f50aef6c9e0ab5ee8aec72b4af88524e828beae028e0bff816759e763e8b8869723fbcfa9d1eaac4c5eb9e6467d7b2db784f5c97e1e3e7ede
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div class="error-page">
|
2
|
+
<h2 class="headline text-red">403</h2>
|
3
|
+
<div class="error-content">
|
4
|
+
<h3><i class="fa fa-warning text-red"></i> Oops! You have do not have permission.</h3>
|
5
|
+
<p>
|
6
|
+
You do not have permission to access this page.
|
7
|
+
Meanwhile, you may <a href="/#">return to dashboard</a>.
|
8
|
+
</p>
|
9
|
+
|
10
|
+
</form>
|
11
|
+
</div>
|
12
|
+
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div class="error-page">
|
2
|
+
<h2 class="headline text-yellow"> 404</h2>
|
3
|
+
<div class="error-content">
|
4
|
+
<h3><i class="fa fa-warning text-yellow"></i> Oops! Page not found.</h3>
|
5
|
+
<p translate>
|
6
|
+
We could not find the page you were looking for.
|
7
|
+
Meanwhile, you may <a href="/#">return to dashboard</a>.
|
8
|
+
</p>
|
9
|
+
|
10
|
+
</div><!-- /.error-content -->
|
11
|
+
</div>
|
@@ -1,5 +1,10 @@
|
|
1
|
-
<div
|
2
|
-
|
3
|
-
<
|
4
|
-
|
5
|
-
</div>
|
1
|
+
<div>
|
2
|
+
<!-- TODO: Find out why disable-timepicker and timepicker does not work together -->
|
3
|
+
<div ng-if="timepicker">
|
4
|
+
<quick-datepicker disable-timepicker="true" id="{{ element_id }}" ng-model="model" class="{{cssClasses}}" ng-required="required" name="{{ field }}" placeholder="{{ 'Click to pick a date' | translate }}" />
|
5
|
+
</div>
|
6
|
+
<div ng-if="!timepicker">
|
7
|
+
<quick-datepicker id="{{ element_id }}" ng-model="model" class="{{cssClasses}}" ng-required="required" name="{{ field }}" placeholder="{{ 'Click to pick a date' | translate }}" />
|
8
|
+
</div>
|
9
|
+
<small id="{{ msg_element_id }}"></small>
|
10
|
+
</div>
|
@@ -1,10 +1,7 @@
|
|
1
|
-
<div>
|
2
|
-
|
3
|
-
|
4
|
-
<
|
1
|
+
<div class="form-group">
|
2
|
+
<div class='input-group date' id="{{element_id}}" >
|
3
|
+
<input type='text' class="form-control" ng-model="model" />
|
4
|
+
<span class="input-group-addon"><span class="fa fa-calendar"></span>
|
5
|
+
</span>
|
5
6
|
</div>
|
6
|
-
<div ng-if="!timepicker">
|
7
|
-
<quick-datepicker id="{{ element_id }}" ng-model="model" class="{{cssClasses}}" ng-required="required" name="{{ field }}" placeholder="{{ 'Click to pick a date' | translate }}" />
|
8
|
-
</div>
|
9
|
-
<small id="{{ msg_element_id }}"></small>
|
10
7
|
</div>
|
@@ -1,25 +1,7 @@
|
|
1
|
-
<div class="
|
2
|
-
<div class="
|
3
|
-
<
|
4
|
-
|
5
|
-
</
|
6
|
-
<div class="display">
|
7
|
-
<input type="text" ng-model="hours" ng-change="change('hour')">
|
8
|
-
</div>
|
9
|
-
<div class="decrease" ng-click="decreaseHours()">
|
10
|
-
<i class="icon fa fa-caret-down"></i>
|
11
|
-
</div>
|
12
|
-
</div>
|
13
|
-
<div class="section minutes">
|
14
|
-
<div class="increase" ng-click="increaseMinutes()">
|
15
|
-
<i class="icon fa fa-caret-up"></i>
|
16
|
-
</div>
|
17
|
-
<div class="display">
|
18
|
-
<input type="text" ng-model="minutes" ng-model-onblur ng-change="update('minute')">
|
19
|
-
</div>
|
20
|
-
<div class="decrease" ng-click="decreaseMinutes()">
|
21
|
-
<i class="icon fa fa-caret-down">
|
22
|
-
</i>
|
23
|
-
</div>
|
1
|
+
<div class="form-group">
|
2
|
+
<div class='input-group date' id="{{element_id}}" >
|
3
|
+
<input type='text' class="form-control" ng-model="model" />
|
4
|
+
<span class="input-group-addon"><span class="fa fa-clock-o"></span>
|
5
|
+
</span>
|
24
6
|
</div>
|
25
7
|
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
input multiple="" type="file"
|
@@ -0,0 +1 @@
|
|
1
|
+
<input multiple="" type="file" />
|
@@ -1,19 +1,19 @@
|
|
1
1
|
<%- if controller_name != 'sessions' %>
|
2
|
-
<%= link_to "Sign in", new_session_path(resource_name) %><br />
|
2
|
+
<%= link_to _("Sign in"), new_session_path(resource_name) %><br />
|
3
3
|
<% end -%>
|
4
4
|
|
5
5
|
<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
|
6
|
-
<%= link_to "Sign up", new_registration_path(resource_name) %><br />
|
6
|
+
<%= link_to _("Sign up"), new_registration_path(resource_name) %><br />
|
7
7
|
<% end -%>
|
8
8
|
|
9
9
|
<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>
|
10
|
-
<%= link_to "Forgot your password?", new_password_path(resource_name) %><br />
|
10
|
+
<%= link_to _("Forgot your password?"), new_password_path(resource_name) %><br />
|
11
11
|
<% end -%>
|
12
12
|
|
13
13
|
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
|
14
|
-
<%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br />
|
14
|
+
<%= link_to _("Didn't receive confirmation instructions?"), new_confirmation_path(resource_name) %><br />
|
15
15
|
<% end -%>
|
16
16
|
|
17
17
|
<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
|
18
|
-
<%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
|
18
|
+
<%= link_to _("Didn't receive unlock instructions?"), new_unlock_path(resource_name) %><br />
|
19
19
|
<% end -%>
|
data/dashstrap.gemspec
CHANGED
data/lib/dashstrap/engine.rb
CHANGED
data/lib/dashstrap/version.rb
CHANGED
data/lib/dashstrap.rb
CHANGED
@@ -9,6 +9,16 @@ module Dashstrap
|
|
9
9
|
def copy_scss_manifest
|
10
10
|
directory 'stylesheets', 'app/assets/stylesheets'
|
11
11
|
end
|
12
|
+
|
13
|
+
def assets_patch
|
14
|
+
append_file 'config/initializers/assets.rb' do
|
15
|
+
%Q(Rails.application.config.assets.precompile += ['fontawesome-webfont.eot',
|
16
|
+
'fontawesome-webfont.woff',
|
17
|
+
'fontawesome-webfont.ttf',
|
18
|
+
'fontawesome-webfont.svg'])
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
12
22
|
end
|
13
23
|
end
|
14
24
|
end
|
@@ -1,25 +1,39 @@
|
|
1
1
|
<div class="row">
|
2
|
-
<div class="col-sm-12 col-md-
|
2
|
+
<div class="col-sm-12 col-md-9">
|
3
3
|
|
4
4
|
<div class="details">
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
5
|
+
<% fields.each do |f, field_type| %>
|
6
|
+
<dl>
|
7
|
+
<% case field_type
|
8
|
+
when "belongs_to" %> <dt translate><%= f.capitalize %> :</dt> <dd clas="detail field value">{{object.<%= f %>.name}}</dd>
|
9
|
+
<% when "has_many" %><dl>
|
10
|
+
<dt translate><%= f.capitalize %> :</dt>
|
11
|
+
<ul>
|
12
|
+
<li ng-repeat="item in object.<%= f %>"> {{ item.name }}</li>
|
13
|
+
</ul>
|
14
|
+
</dl>
|
15
|
+
<% else %><dt translate><%= f.capitalize %> :</dt> <dd clas="detail field value">{{object.<%= f %>}}</dd>
|
16
|
+
<% end %></dl>
|
17
|
+
<% end %>
|
18
18
|
</div>
|
19
19
|
|
20
|
-
|
21
20
|
</div>
|
22
21
|
|
23
|
-
<div class="col-sm-12 col-md-
|
22
|
+
<div class="col-sm-12 col-md-3">
|
23
|
+
<% if resource_data["childs"] %>
|
24
|
+
<div class="box box-solid">
|
25
|
+
<div class="box-body text-center">
|
26
|
+
<div class="btn-group-vertical">
|
27
|
+
<% resource_data["childs"].each do |item| %>
|
28
|
+
<a class="btn btn-info" ng-href="#/<%= resource_url %>/{{ object.id }}/<%= item.pluralize %>" translate>
|
29
|
+
<%= item.titleize %>
|
30
|
+
</a>
|
31
|
+
<% end %>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<% end %>
|
36
|
+
|
24
37
|
</div>
|
25
38
|
</div>
|
39
|
+
</div>
|
@@ -78,7 +78,7 @@
|
|
78
78
|
$(".form input").val("");
|
79
79
|
}
|
80
80
|
else {
|
81
|
-
$state.go("<%= resource.pluralize.underscore %>");
|
81
|
+
$state.go("<%= resource.pluralize.underscore %>", {}, { reload: true });
|
82
82
|
}
|
83
83
|
}, function(data){
|
84
84
|
catch_error(data);
|
@@ -92,7 +92,7 @@
|
|
92
92
|
$(".form input").val("");
|
93
93
|
}
|
94
94
|
else {
|
95
|
-
$state.go("<%= resource.pluralize.underscore %>");
|
95
|
+
$state.go("<%= resource.pluralize.underscore %>", {}, { reload: true });
|
96
96
|
}
|
97
97
|
}, function(data){
|
98
98
|
catch_error(data);
|
@@ -3,6 +3,7 @@
|
|
3
3
|
<%= resource.pluralize %>.controller("<%= resource %>Controller", ["$rootScope", "$scope", "gettext", "Restangular", "catch_error", "$state", "$stateParams", function($rootScope, $scope, _, API, catch_error, $state, $stateParams){
|
4
4
|
|
5
5
|
$rootScope.section_name = _("<%= resource.underscore.pluralize.titleize %>");
|
6
|
+
|
6
7
|
$rootScope.section_slug = _("List");
|
7
8
|
|
8
9
|
<% parents.each do |parent| %>
|
@@ -25,6 +26,7 @@
|
|
25
26
|
list: <% if parent? %>API.<% parents.each do |parent| %>one("<%= parent %>", $scope.<%= parent %>_id)<% end %>.all("<%= resource.pluralize.underscore %>")<% else %>API.all("<%= resource.pluralize.underscore %>")<% end %>
|
26
27
|
};
|
27
28
|
$scope.<%= resource.pluralize.underscore %> = [];<% end %>
|
29
|
+
|
28
30
|
<% unless no_bulk? %>// Cache object for each field name possible values
|
29
31
|
$scope.cache = {};
|
30
32
|
|
@@ -85,6 +87,7 @@
|
|
85
87
|
},
|
86
88
|
|
87
89
|
},<% end %>
|
90
|
+
<% unless no_duplicate? %>
|
88
91
|
{
|
89
92
|
title: _("Duplicate"),
|
90
93
|
icon: "fa fa-files-o",
|
@@ -106,6 +109,7 @@
|
|
106
109
|
}
|
107
110
|
}
|
108
111
|
}
|
112
|
+
<% end %>
|
109
113
|
|
110
114
|
];<% unless no_bulk? %>
|
111
115
|
|
@@ -178,7 +182,7 @@
|
|
178
182
|
API.<% parents.each do |p| %>all("<%=p %>").<% end %>all("<%= resource.pluralize.underscore %>").customDELETE(query.join(","))
|
179
183
|
.then(function(data) {
|
180
184
|
|
181
|
-
$scope.<%= resource.pluralize.underscore %> =
|
185
|
+
$scope.<%= resource.pluralize.underscore %> = $scope.<%= resource.pluralize.underscore %>.filter(function(x){
|
182
186
|
return !(query.indexOf(x.id) != -1);
|
183
187
|
});
|
184
188
|
success_message(data.msg);
|
@@ -3,8 +3,8 @@ module.exports = function (grunt) {
|
|
3
3
|
nggettext_extract: {
|
4
4
|
pot: {
|
5
5
|
files: {
|
6
|
-
'app/assets/locales/templates.pot': ['app/views/
|
7
|
-
'app/views/
|
6
|
+
'app/assets/locales/templates.pot': ['app/views/angular/**/*.html',
|
7
|
+
'app/views/angular/**/*.html.erb',
|
8
8
|
'app/assets/javascripts/**/*.js',
|
9
9
|
'app/assets/javascripts/**/*.js',
|
10
10
|
'app/assets/javascripts/**/*.coffee',
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dashstrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sameer Rahmani
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -192,6 +192,34 @@ dependencies:
|
|
192
192
|
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: momentjs-rails
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 2.8.1
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 2.8.1
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: bootstrap3-datetimepicker-rails
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '4.7'
|
216
|
+
type: :runtime
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '4.7'
|
195
223
|
description: 'An awesome dashboard template for Faalis platform. '
|
196
224
|
email:
|
197
225
|
- lxsameer@gnu.org
|
@@ -222,7 +250,6 @@ files:
|
|
222
250
|
- app/assets/stylesheets/dashstrap/ltr/application.css
|
223
251
|
- app/assets/stylesheets/dashstrap/ltr/ltr.scss
|
224
252
|
- app/assets/stylesheets/dashstrap/main.css.scss
|
225
|
-
- app/assets/stylesheets/dashstrap/rtl/#application.css#
|
226
253
|
- app/assets/stylesheets/dashstrap/rtl/application.css
|
227
254
|
- app/assets/stylesheets/dashstrap/rtl/rtl.scss
|
228
255
|
- app/assets/stylesheets/dashstrap/share.scss
|
@@ -232,6 +259,8 @@ files:
|
|
232
259
|
- app/assets/stylesheets/simple/rtl/application.css
|
233
260
|
- app/assets/stylesheets/simple/rtl/rtl.scss
|
234
261
|
- app/assets/stylesheets/simple/share.scss
|
262
|
+
- app/views/angular/403.html
|
263
|
+
- app/views/angular/404.html
|
235
264
|
- app/views/angular/auth/groups/details.html
|
236
265
|
- app/views/angular/auth/groups/index.html.slim
|
237
266
|
- app/views/angular/auth/groups/new.html.slim
|
@@ -252,8 +281,11 @@ files:
|
|
252
281
|
- app/views/angular/fields/datepicker/month.html
|
253
282
|
- app/views/angular/fields/datepicker/popup.html
|
254
283
|
- app/views/angular/fields/datepicker/year.html
|
284
|
+
- app/views/angular/fields/datetime/date.html
|
255
285
|
- app/views/angular/fields/datetime/datetime.html
|
256
286
|
- app/views/angular/fields/datetime/time.html
|
287
|
+
- app/views/angular/fields/file/file.html.slim
|
288
|
+
- app/views/angular/fields/file/file_upload.html
|
257
289
|
- app/views/angular/fields/float/float.html
|
258
290
|
- app/views/angular/fields/image/image.html
|
259
291
|
- app/views/angular/fields/integer/integer.html
|