dashstrap 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.yardopts +1 -0
- data/Gemfile +8 -0
- data/LICENSE +339 -0
- data/README.md +40 -0
- data/Rakefile +13 -0
- data/TODO.org +3 -0
- data/app/assets/fonts/BYekan.eot +0 -0
- data/app/assets/fonts/BYekan.ttf +0 -0
- data/app/assets/fonts/BYekan.woff +0 -0
- data/app/assets/javascripts/dashstrap/application.js +2 -0
- data/app/assets/javascripts/dashstrap/functions.js +27 -0
- data/app/assets/javascripts/dashstrap/locales/translations.fa.js +5 -0
- data/app/assets/javascripts/dashstrap/modules/init.js +1 -0
- data/app/assets/javascripts/dashstrap/modules/list-view.js +376 -0
- data/app/assets/javascripts/dashstrap/modules/modules.js +79 -0
- data/app/assets/javascripts/dashstrap/modules/navigation.js +24 -0
- data/app/assets/javascripts/locales/translations.fa.js +5 -0
- data/app/assets/locales/templates.pot +92 -0
- data/app/assets/locales/translate.fa.pot +93 -0
- data/app/assets/stylesheets/dashstrap/ltr/application.css +17 -0
- data/app/assets/stylesheets/dashstrap/ltr/ltr.scss +15 -0
- data/app/assets/stylesheets/dashstrap/main.css.scss +63 -0
- data/app/assets/stylesheets/dashstrap/rtl/#application.css# +4 -0
- data/app/assets/stylesheets/dashstrap/rtl/application.css +18 -0
- data/app/assets/stylesheets/dashstrap/rtl/rtl.scss +38 -0
- data/app/assets/stylesheets/dashstrap/share.scss +7 -0
- data/app/assets/stylesheets/faalis/ltr/application.css +0 -0
- data/app/assets/stylesheets/faalis/rtl/application.css +0 -0
- data/app/assets/stylesheets/simple/ltr/application.css +4 -0
- data/app/assets/stylesheets/simple/rtl/application.css +5 -0
- data/app/assets/stylesheets/simple/rtl/rtl.scss +16 -0
- data/app/assets/stylesheets/simple/share.scss +11 -0
- data/app/views/angular/auth/groups/details.html +21 -0
- data/app/views/angular/auth/groups/index.html.slim +2 -0
- data/app/views/angular/auth/groups/new.html.slim +44 -0
- data/app/views/angular/auth/index.html +30 -0
- data/app/views/angular/auth/profile/edit.html +54 -0
- data/app/views/angular/auth/users/details.html +28 -0
- data/app/views/angular/auth/users/index.html +6 -0
- data/app/views/angular/auth/users/new.html +57 -0
- data/app/views/angular/fields/accordion/accordion-group.html +10 -0
- data/app/views/angular/fields/accordion/accordion.html +1 -0
- data/app/views/angular/fields/alert/alert.html +7 -0
- data/app/views/angular/fields/boolean/boolean.html +4 -0
- data/app/views/angular/fields/carousel/carousel.html +8 -0
- data/app/views/angular/fields/carousel/slide.html +7 -0
- data/app/views/angular/fields/control-combo/control-list.html +19 -0
- data/app/views/angular/fields/datepicker/datepicker.html +5 -0
- data/app/views/angular/fields/datepicker/day.html +21 -0
- data/app/views/angular/fields/datepicker/month.html +16 -0
- data/app/views/angular/fields/datepicker/popup.html +10 -0
- data/app/views/angular/fields/datepicker/year.html +16 -0
- data/app/views/angular/fields/datetime/datetime.html +10 -0
- data/app/views/angular/fields/datetime/time.html +25 -0
- data/app/views/angular/fields/float/float.html +4 -0
- data/app/views/angular/fields/image/image.html +1 -0
- data/app/views/angular/fields/integer/integer.html +4 -0
- data/app/views/angular/fields/modal/backdrop.html +4 -0
- data/app/views/angular/fields/modal/window.html +3 -0
- data/app/views/angular/fields/pagination/pager.html +4 -0
- data/app/views/angular/fields/pagination/pagination.html +7 -0
- data/app/views/angular/fields/popover/popover.html +8 -0
- data/app/views/angular/fields/progressbar/bar.html +1 -0
- data/app/views/angular/fields/progressbar/progress.html +1 -0
- data/app/views/angular/fields/progressbar/progressbar.html +3 -0
- data/app/views/angular/fields/rating/rating.html +5 -0
- data/app/views/angular/fields/relation/relation.html +43 -0
- data/app/views/angular/fields/string/string.html +22 -0
- data/app/views/angular/fields/tabs/tab.html +3 -0
- data/app/views/angular/fields/tabs/tabset.html +10 -0
- data/app/views/angular/fields/tag/tag.html +3 -0
- data/app/views/angular/fields/text/text.html +4 -0
- data/app/views/angular/fields/timepicker/timepicker.html +26 -0
- data/app/views/angular/fields/tooltip/tooltip-html-unsafe-popup.html +4 -0
- data/app/views/angular/fields/tooltip/tooltip-popup.html +4 -0
- data/app/views/angular/fields/typeahead/typeahead-match.html +1 -0
- data/app/views/angular/fields/typeahead/typeahead-popup.html +5 -0
- data/app/views/angular/index.html +448 -0
- data/app/views/angular/list-view/index.html +161 -0
- data/app/views/angular/modules.html +46 -0
- data/app/views/angular/nav.html.erb +273 -0
- data/app/views/dashstrap/.keep +0 -0
- data/app/views/devise/registrations/edit.html.erb +29 -0
- data/app/views/devise/registrations/new.html.erb +36 -0
- data/app/views/devise/sessions/new.html.erb +33 -0
- data/app/views/devise/shared/_links.erb +19 -0
- data/app/views/devise/shared/_omni_link.erb +15 -0
- data/app/views/faalis/dashboard/index.html.erb +44 -0
- data/app/views/faalis/dashboard/login_required_page.html.erb +5 -0
- data/app/views/layouts/dashstrap/.keep +0 -0
- data/app/views/layouts/faalis/application.html.erb +83 -0
- data/app/views/layouts/faalis/dashboard.html.erb +26 -0
- data/app/views/layouts/faalis/simple.html.erb +22 -0
- data/dashstrap.gemspec +39 -0
- data/lib/dashstrap/engine.rb +29 -0
- data/lib/dashstrap/version.rb +3 -0
- data/lib/dashstrap.rb +4 -0
- data/lib/generators/dashstrap/install_generator.rb +14 -0
- data/lib/generators/templates/js/list_view/README +31 -0
- data/lib/generators/templates/js/list_view/details.html.erb +25 -0
- data/lib/generators/templates/js/list_view/index.html.erb +89 -0
- data/lib/generators/templates/js/list_view/module.js.erb +10 -0
- data/lib/generators/templates/js/list_view/new.html.erb +81 -0
- data/lib/generators/templates/js/list_view/partials/add_controller.js.erb +103 -0
- data/lib/generators/templates/js/list_view/partials/config.js.erb +20 -0
- data/lib/generators/templates/js/list_view/partials/index_controller.js.erb +199 -0
- data/lib/generators/templates/js/list_view/partials/menu.js.erb +6 -0
- data/lib/generators/templates/stylesheets/application.css +13 -0
- data/lib/generators/templates/stylesheets/dashboard/ltr/application.css +1 -0
- data/lib/generators/templates/stylesheets/dashboard/rtl/application.css +1 -0
- data/lib/generators/templates/stylesheets/ltr/application.css +6 -0
- data/lib/generators/templates/stylesheets/rtl/application.css +4 -0
- data/lib/tasks/.keep +0 -0
- data/lib/tasks/build.rake +15 -0
- data/lib/tasks/grunt/Gruntfile.js +30 -0
- data/vendor/assets/fonts/FontAwesome.otf +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.svg +414 -0
- data/vendor/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.woff +0 -0
- data/vendor/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/vendor/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/fonts/ionicons.eot +0 -0
- data/vendor/assets/fonts/ionicons.svg +1623 -0
- data/vendor/assets/fonts/ionicons.ttf +0 -0
- data/vendor/assets/fonts/ionicons.woff +0 -0
- data/vendor/assets/javascripts/.keep +0 -0
- data/vendor/assets/javascripts/AdminLTE/app.js +1037 -0
- data/vendor/assets/javascripts/AdminLTE/dashboard.js +254 -0
- data/vendor/assets/javascripts/bootstrap.js +2114 -0
- data/vendor/assets/javascripts/ui-bootstrap.js +3799 -0
- data/vendor/assets/stylesheets/.keep +0 -0
- data/vendor/assets/stylesheets/AdminLTE.css +3024 -0
- data/vendor/assets/stylesheets/bootstrap.css +7118 -0
- data/vendor/assets/stylesheets/rtl/AdminLTE.css +3032 -0
- data/vendor/assets/stylesheets/rtl/bootstrap-rtl.css +442 -0
- data/vendor/assets/stylesheets/rtl/bootstrap.css +6239 -0
- metadata +366 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
$tools_link_color: #3f3f3f;
|
2
|
+
|
3
|
+
.just-top-padding {
|
4
|
+
padding: inherit !important;
|
5
|
+
padding-top: 0.5em !important;
|
6
|
+
}
|
7
|
+
|
8
|
+
.box-tools, .box-title {
|
9
|
+
.btn {
|
10
|
+
margin-left: 0.2em;
|
11
|
+
margin-right: 0.2em;
|
12
|
+
a {
|
13
|
+
color: #fff;
|
14
|
+
}
|
15
|
+
}
|
16
|
+
.search-group {
|
17
|
+
margin-left: 0.2em;
|
18
|
+
margin-right: 0.2em;
|
19
|
+
}
|
20
|
+
|
21
|
+
}
|
22
|
+
|
23
|
+
.list-view-table {
|
24
|
+
tr {
|
25
|
+
th:first-child, td:first-child {
|
26
|
+
width: 2em;
|
27
|
+
}
|
28
|
+
th:last-child, td:last-child {
|
29
|
+
span {
|
30
|
+
cursor: pointer;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
&.title-row {
|
35
|
+
|
36
|
+
.tools {
|
37
|
+
visibility: hidden;
|
38
|
+
|
39
|
+
direction: ltr;
|
40
|
+
a {
|
41
|
+
color: $tools_link_color;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
&:hover {
|
46
|
+
.tools {
|
47
|
+
visibility: visible;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
.pointer {
|
55
|
+
cursor: pointer;
|
56
|
+
}
|
57
|
+
|
58
|
+
.pagination_page {
|
59
|
+
width: 8em;
|
60
|
+
padding-left: 1em;
|
61
|
+
padding-right: 1em;
|
62
|
+
|
63
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
//= require rtl/bootstrap
|
2
|
+
//= require rtl/bootstrap-rtl
|
3
|
+
//= require font-awesome
|
4
|
+
/*
|
5
|
+
ionicons
|
6
|
+
morris
|
7
|
+
jquery-jvectormap-1.2.2
|
8
|
+
datepicker3.css
|
9
|
+
daterangepicker-bs3
|
10
|
+
bootstrap3-wysihtml5
|
11
|
+
*/
|
12
|
+
|
13
|
+
//= require rtl/AdminLTE
|
14
|
+
//= require dashstrap/share
|
15
|
+
//= require dashstrap/main
|
16
|
+
//= require dashstrap/rtl/rtl
|
17
|
+
//= require select2/select2
|
18
|
+
//= require select2/select2-bootstrap
|
@@ -0,0 +1,38 @@
|
|
1
|
+
@font-face {
|
2
|
+
font-family: 'yekan';
|
3
|
+
src: font-url('/fonts/BYekan.eot');
|
4
|
+
src: font-url("/fonts/Yekan.eot#iefix") format('embedded-opentype'),
|
5
|
+
font-url("/fonts/Yekan.woff") format('woff'),
|
6
|
+
font-url("/fonts/Yekan.ttf") format('truetype');
|
7
|
+
}
|
8
|
+
|
9
|
+
|
10
|
+
div, p, h1,h2,h3,h4,h5,h6,a{
|
11
|
+
font-family: 'yekan', tahoma;
|
12
|
+
}
|
13
|
+
|
14
|
+
.logo{
|
15
|
+
font-family: 'yekan', tahoma !important;
|
16
|
+
}
|
17
|
+
|
18
|
+
.list-view-table {
|
19
|
+
tr {
|
20
|
+
.row_buttons {
|
21
|
+
padding-left: 1em;
|
22
|
+
text-align: left;
|
23
|
+
}
|
24
|
+
|
25
|
+
&.title-row {
|
26
|
+
|
27
|
+
.tools {
|
28
|
+
|
29
|
+
.tool {
|
30
|
+
margin-left:2em;
|
31
|
+
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
}
|
36
|
+
|
37
|
+
}
|
38
|
+
}
|
File without changes
|
File without changes
|
@@ -0,0 +1,16 @@
|
|
1
|
+
@font-face {
|
2
|
+
font-family: 'yekan';
|
3
|
+
src: font-url('/fonts/BYekan.eot');
|
4
|
+
src: font-url("/fonts/Yekan.eot#iefix") format('embedded-opentype'),
|
5
|
+
font-url("/fonts/Yekan.woff") format('woff'),
|
6
|
+
font-url("/fonts/Yekan.ttf") format('truetype');
|
7
|
+
}
|
8
|
+
|
9
|
+
|
10
|
+
div, p, h1,h2,h3,h4,h5,h6,a{
|
11
|
+
font-family: 'yekan', tahoma;
|
12
|
+
}
|
13
|
+
|
14
|
+
.logo{
|
15
|
+
font-family: 'yekan', tahoma !important;
|
16
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<div class="details">
|
2
|
+
<p>
|
3
|
+
<b translate>Group Name :</b>{{this.object.name}}
|
4
|
+
</p>
|
5
|
+
|
6
|
+
<p>
|
7
|
+
<b translate>Permissions :</b>
|
8
|
+
<ul>
|
9
|
+
<li ng-repeat="perm in this.object.permissions">{{ perm.string_repr }}</li>
|
10
|
+
</ul>
|
11
|
+
</p>
|
12
|
+
|
13
|
+
<ul class="button-group float-right">
|
14
|
+
<a ng-href="#/auth/groups/{{ this.object.id }}/edit" class="small">
|
15
|
+
<span class="fa fa-edit"></span> <span translated>Edit</span>
|
16
|
+
</a>
|
17
|
+
<!--<a ng-href="#/auth/groups/{{ this.object.id }}" class="small">
|
18
|
+
<span class="fa fa-eye"></span><span translated>Show</span>-->
|
19
|
+
</a>
|
20
|
+
</ul>
|
21
|
+
</div>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
.row
|
2
|
+
.col-sm-12.col-lg-9
|
3
|
+
.box.box-primary
|
4
|
+
.box-header
|
5
|
+
.box-title ng-if="!editing"
|
6
|
+
= _('New Group')
|
7
|
+
|
8
|
+
.box-title ng-if="editing"
|
9
|
+
= _('Edit Group')
|
10
|
+
|
11
|
+
form[name="new_group" role="form" novalidate]
|
12
|
+
.box-body
|
13
|
+
.row
|
14
|
+
.col-sm-12.col-lg-6
|
15
|
+
label for="group_name"
|
16
|
+
= ('Group name')
|
17
|
+
|
18
|
+
input#group_name.form-control[placeholder==(_('Enter the name of group you want to create')) ng-model="new_name" type="text" required]
|
19
|
+
|
20
|
+
.box-footer
|
21
|
+
.row
|
22
|
+
.col-sm-12
|
23
|
+
button.btn.btn-primary type="submit" ng-click="save()" ng-disabled="form.$invalid"
|
24
|
+
span
|
25
|
+
i.fa.fa-check
|
26
|
+
= _('Save')
|
27
|
+
|
28
|
+
button.btn.btn-danger type="submit" ng-click="cancel()"
|
29
|
+
i.fa.fa-times
|
30
|
+
= _('Cancel')
|
31
|
+
.col-sm-12.col-lg-3
|
32
|
+
.box
|
33
|
+
.box-header
|
34
|
+
.box-title
|
35
|
+
= _('Groups to use as template')
|
36
|
+
.row
|
37
|
+
.col-sm-9
|
38
|
+
.box.box-warning
|
39
|
+
.box-header
|
40
|
+
.box-title
|
41
|
+
= _("Permissions")
|
42
|
+
|
43
|
+
.box-body
|
44
|
+
.row
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<div class="row clearmargin">
|
2
|
+
|
3
|
+
<div class="columns large-5 small-offset-1 clearpadding">
|
4
|
+
|
5
|
+
<a href="#/auth/users">
|
6
|
+
<div class="widget red">
|
7
|
+
<div class="text-center">
|
8
|
+
<span class="icon text-4x"><i class="fa fa-user"></i></span>
|
9
|
+
<span class="text-2x" translate>Users</span>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
</div>
|
13
|
+
</a>
|
14
|
+
|
15
|
+
</div>
|
16
|
+
|
17
|
+
|
18
|
+
<div class="columns large-5 clearpadding">
|
19
|
+
|
20
|
+
<a href="#/auth/groups">
|
21
|
+
<div class="widget blue">
|
22
|
+
<div class=" text-center">
|
23
|
+
<span class="icon text-4x"><i class="fa fa-group"></i></span>
|
24
|
+
<span class="text-2x" translate>Groups</span>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
</a>
|
28
|
+
</div>
|
29
|
+
|
30
|
+
</div>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<div class="newform">
|
2
|
+
<fieldset class="form">
|
3
|
+
|
4
|
+
<legend translate>Edit Profile</legend>
|
5
|
+
|
6
|
+
<div class="row">
|
7
|
+
<div class="small-4 columns">
|
8
|
+
<label for="first_name" translate>First Name :</label>
|
9
|
+
<input id="id_first_name" type="text" name="first_name" required ng-model="first_name" required>
|
10
|
+
<small id="id_first_name_msg"></small>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="small-4 columns float-left small-offset-2">
|
14
|
+
<label for="last_name" translate>Last Name :</label>
|
15
|
+
<input id="id_last_name" type="text" name="last_name" required ng-model="last_name">
|
16
|
+
<small id="id_last_name_msg"></small>
|
17
|
+
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="row">
|
22
|
+
<div class="small-4 columns">
|
23
|
+
<label for="password" translate>Password :</label>
|
24
|
+
<input id="id_password" type="password" name="password" required ng-model="password" required>
|
25
|
+
<small id="id_first_name_msg"></small>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div class="small-4 columns float-left small-offset-2">
|
29
|
+
<label for="password_confirmation" translate>Confirm Password :</label>
|
30
|
+
<input id="id_password_confirmation" type="password" name="password_confirmation" required ng-model="password_confirmation">
|
31
|
+
<small id="id_password_confirmation_msg"></small>
|
32
|
+
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<div class="row">
|
36
|
+
|
37
|
+
<div class="small-4 columns">
|
38
|
+
<label for="email" translate>E-mail :</label>
|
39
|
+
<input id="id_email" type="email" name="email" required ng-model="email">
|
40
|
+
<small id="id_email_msg"></small>
|
41
|
+
|
42
|
+
</div>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
</fieldset>
|
46
|
+
|
47
|
+
<div class="row">
|
48
|
+
<div class="small-4 columns">
|
49
|
+
<button ng-click="save()" class="btn small green" ng-disabled="form.first_name.$pristine || form.first_name.$dirty && form.fist_name.$invalid"><i class="fa fa-check"></i> <span translate>Save</span></button>
|
50
|
+
<button ng-click="cancel()" class="btn small red"><i class="fa fa-times"></i> <span translate>Cancel</span></button>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
</div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<div class="details">
|
2
|
+
<p >
|
3
|
+
<b translate>First Name :</b>{{this.object.first_name}}
|
4
|
+
</p>
|
5
|
+
|
6
|
+
<p>
|
7
|
+
<b translate>Last Name :</b>{{this.object.last_name}}
|
8
|
+
</p>
|
9
|
+
|
10
|
+
<p>
|
11
|
+
<b translate>E-mail :</b>{{this.object.email}}
|
12
|
+
</p>
|
13
|
+
<p>
|
14
|
+
<b translate>Group :</b>{{this.object.group.name}}
|
15
|
+
</p>
|
16
|
+
|
17
|
+
<ul class="button-group float-right">
|
18
|
+
<a href="#/auth/users/{{this.object.id}}/reply" class="small">
|
19
|
+
<span class="fa fa-edit"></span> <span translated>Edit</span>
|
20
|
+
</a>
|
21
|
+
<a href="" class="small">
|
22
|
+
<span class="fa fa-eye"></span><span translated>Show</span>
|
23
|
+
</a>
|
24
|
+
<a href="" class="small">
|
25
|
+
<span class="fa fa-check-circle-o"></span><span translated>Active</span>
|
26
|
+
</a>
|
27
|
+
</ul>
|
28
|
+
</div>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<list-view buttons="buttons" objects="users" title-attribute="'email'" details-template="details_template" item-per-page="10" on_delete="on_delete">
|
2
|
+
|
3
|
+
<div class="small-6 column text-left clearpadding">
|
4
|
+
<h3><i class="fa fa-group"></i> <span translate>Users</span></h3>
|
5
|
+
</div>
|
6
|
+
</list-view>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<div class="newform">
|
2
|
+
<form novalidate name="form">
|
3
|
+
<fieldset class="form">
|
4
|
+
|
5
|
+
<legend translate>New User</legend>
|
6
|
+
|
7
|
+
<div class="row">
|
8
|
+
<div class="small-4 columns">
|
9
|
+
<label for="first_name" translate>First Name :</label>
|
10
|
+
<input id="id_first_name" type="text" name="first_name" required ng-model="first_name">
|
11
|
+
<small id="id_first_name_msg"></small>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="small-4 columns float-left small-offset-2">
|
15
|
+
<label for="last_name" translate>Last Name :</label>
|
16
|
+
<input id="id_last_name" type="text" name="last_name" required ng-model="last_name">
|
17
|
+
<small id="id_last_name_msg"></small>
|
18
|
+
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<div class="row">
|
22
|
+
<div class="small-4 columns">
|
23
|
+
<label for="password" translate>Password :</label>
|
24
|
+
<input id="id_password" type="password" name="password" required ng-model="password">
|
25
|
+
<small id="id_password_msg"></small>
|
26
|
+
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div class="small-4 columns float-left small-offset-2">
|
30
|
+
<label for="email" translate>E-mail :</label>
|
31
|
+
<input id="id_email" type="email" name="email" required ng-model="email">
|
32
|
+
<small id="id_email_msg"></small>
|
33
|
+
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
<div class="row">
|
37
|
+
<div class="small-4 columns">
|
38
|
+
<label for="group" translate>Group :</label>
|
39
|
+
<select id="id_group" name="group" required ng-model="group">
|
40
|
+
<option ng-repeat="item in groups" value="{{item.id}}" ng-select="item.id === group">{{item.name}}</option>
|
41
|
+
</select>
|
42
|
+
<small id="id_group_msg"></small>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
</div>
|
47
|
+
|
48
|
+
</fieldset>
|
49
|
+
|
50
|
+
<div class="row">
|
51
|
+
<div class="small-4 columns">
|
52
|
+
<button ng-click="save()" class="btn small green" ng-disabled="form.$invalid || !form.$dirty"><i class="fa fa-check"></i> <span translate>Save</span></button>
|
53
|
+
<button ng-click="cancel()" class="btn small red"><i class="fa fa-times"></i> <span translate>Cancel</span></button>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
</form>
|
57
|
+
</div>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<div class="panel panel-default">
|
2
|
+
<div class="panel-heading">
|
3
|
+
<h4 class="panel-title">
|
4
|
+
<a href class="accordion-toggle" ng-click="toggleOpen()" accordion-transclude="heading"><span ng-class="{'text-muted': isDisabled}">{{heading}}</span></a>
|
5
|
+
</h4>
|
6
|
+
</div>
|
7
|
+
<div class="panel-collapse" collapse="!isOpen">
|
8
|
+
<div class="panel-body" ng-transclude></div>
|
9
|
+
</div>
|
10
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<div class="panel-group" ng-transclude></div>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<div class="alert" ng-class="['alert-' + (type || 'warning'), closeable ? 'alert-dismissable' : null]" role="alert">
|
2
|
+
<button ng-show="closeable" type="button" class="close" ng-click="close()">
|
3
|
+
<span aria-hidden="true">×</span>
|
4
|
+
<span class="sr-only">Close</span>
|
5
|
+
</button>
|
6
|
+
<div ng-transclude></div>
|
7
|
+
</div>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel" ng-swipe-right="prev()" ng-swipe-left="next()">
|
2
|
+
<ol class="carousel-indicators" ng-show="slides.length > 1">
|
3
|
+
<li ng-repeat="slide in slides track by $index" ng-class="{active: isActive(slide)}" ng-click="select(slide)"></li>
|
4
|
+
</ol>
|
5
|
+
<div class="carousel-inner" ng-transclude></div>
|
6
|
+
<a class="left carousel-control" ng-click="prev()" ng-show="slides.length > 1"><span class="glyphicon glyphicon-chevron-left"></span></a>
|
7
|
+
<a class="right carousel-control" ng-click="next()" ng-show="slides.length > 1"><span class="glyphicon glyphicon-chevron-right"></span></a>
|
8
|
+
</div>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<div ng-class="{
|
2
|
+
'active': leaving || (active && !entering),
|
3
|
+
'prev': (next || active) && direction=='prev',
|
4
|
+
'next': (next || active) && direction=='next',
|
5
|
+
'right': direction=='prev',
|
6
|
+
'left': direction=='next'
|
7
|
+
}" class="item text-center" ng-transclude></div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="row">
|
2
|
+
<table>
|
3
|
+
<thead>
|
4
|
+
<th>
|
5
|
+
<td translate>Facility Name</td>
|
6
|
+
<td translate>Number</td>
|
7
|
+
<td translate>Price?</td>
|
8
|
+
<td translate>Note</td>
|
9
|
+
</th>
|
10
|
+
</thead>
|
11
|
+
<tbody>
|
12
|
+
|
13
|
+
<tr ng-repeat="obj in objects_rows">
|
14
|
+
<ng-include src="config.row_template"></ng-include>
|
15
|
+
</tr>
|
16
|
+
</tbody>
|
17
|
+
</table>
|
18
|
+
|
19
|
+
</div>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<div ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">
|
2
|
+
<daypicker ng-switch-when="day" tabindex="0"></daypicker>
|
3
|
+
<monthpicker ng-switch-when="month" tabindex="0"></monthpicker>
|
4
|
+
<yearpicker ng-switch-when="year" tabindex="0"></yearpicker>
|
5
|
+
</div>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<table role="grid" aria-labelledby="{{uniqueId}}-title" aria-activedescendant="{{activeDateId}}">
|
2
|
+
<thead>
|
3
|
+
<tr>
|
4
|
+
<th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>
|
5
|
+
<th colspan="{{5 + showWeeks}}"><button id="{{uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>
|
6
|
+
<th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>
|
7
|
+
</tr>
|
8
|
+
<tr>
|
9
|
+
<th ng-show="showWeeks" class="text-center"></th>
|
10
|
+
<th ng-repeat="label in labels track by $index" class="text-center"><small aria-label="{{label.full}}">{{label.abbr}}</small></th>
|
11
|
+
</tr>
|
12
|
+
</thead>
|
13
|
+
<tbody>
|
14
|
+
<tr ng-repeat="row in rows track by $index">
|
15
|
+
<td ng-show="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>
|
16
|
+
<td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{dt.uid}}" aria-disabled="{{!!dt.disabled}}">
|
17
|
+
<button type="button" style="width:100%;" class="btn btn-default btn-sm" ng-class="{'btn-info': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="{'text-muted': dt.secondary, 'text-info': dt.current}">{{dt.label}}</span></button>
|
18
|
+
</td>
|
19
|
+
</tr>
|
20
|
+
</tbody>
|
21
|
+
</table>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<table role="grid" aria-labelledby="{{uniqueId}}-title" aria-activedescendant="{{activeDateId}}">
|
2
|
+
<thead>
|
3
|
+
<tr>
|
4
|
+
<th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>
|
5
|
+
<th><button id="{{uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>
|
6
|
+
<th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>
|
7
|
+
</tr>
|
8
|
+
</thead>
|
9
|
+
<tbody>
|
10
|
+
<tr ng-repeat="row in rows track by $index">
|
11
|
+
<td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{dt.uid}}" aria-disabled="{{!!dt.disabled}}">
|
12
|
+
<button type="button" style="width:100%;" class="btn btn-default" ng-class="{'btn-info': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="{'text-info': dt.current}">{{dt.label}}</span></button>
|
13
|
+
</td>
|
14
|
+
</tr>
|
15
|
+
</tbody>
|
16
|
+
</table>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<ul class="dropdown-menu" ng-style="{display: (isOpen && 'block') || 'none', top: position.top+'px', left: position.left+'px'}" ng-keydown="keydown($event)">
|
2
|
+
<li ng-transclude></li>
|
3
|
+
<li ng-if="showButtonBar" style="padding:10px 9px 2px">
|
4
|
+
<span class="btn-group pull-left">
|
5
|
+
<button type="button" class="btn btn-sm btn-info" ng-click="select('today')">{{ getText('current') }}</button>
|
6
|
+
<button type="button" class="btn btn-sm btn-danger" ng-click="select(null)">{{ getText('clear') }}</button>
|
7
|
+
</span>
|
8
|
+
<button type="button" class="btn btn-sm btn-success pull-right" ng-click="close()">{{ getText('close') }}</button>
|
9
|
+
</li>
|
10
|
+
</ul>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<table role="grid" aria-labelledby="{{uniqueId}}-title" aria-activedescendant="{{activeDateId}}">
|
2
|
+
<thead>
|
3
|
+
<tr>
|
4
|
+
<th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>
|
5
|
+
<th colspan="3"><button id="{{uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>
|
6
|
+
<th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>
|
7
|
+
</tr>
|
8
|
+
</thead>
|
9
|
+
<tbody>
|
10
|
+
<tr ng-repeat="row in rows track by $index">
|
11
|
+
<td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{dt.uid}}" aria-disabled="{{!!dt.disabled}}">
|
12
|
+
<button type="button" style="width:100%;" class="btn btn-default" ng-class="{'btn-info': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="{'text-info': dt.current}">{{dt.label}}</span></button>
|
13
|
+
</td>
|
14
|
+
</tr>
|
15
|
+
</tbody>
|
16
|
+
</table>
|
@@ -0,0 +1,10 @@
|
|
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>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<div class="timeSelectorDirective" >
|
2
|
+
<div class="section hours">
|
3
|
+
<div class="increase" ng-click="increaseHours()">
|
4
|
+
<i class="icon fa fa-caret-up"></i>
|
5
|
+
</div>
|
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>
|
24
|
+
</div>
|
25
|
+
</div>
|