engine2 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +2 -0
  3. data/Rakefile +138 -0
  4. data/conf/message.yaml +93 -0
  5. data/conf/message_pl.yaml +93 -0
  6. data/engine2.gemspec +34 -0
  7. data/lib/engine2.rb +34 -0
  8. data/lib/engine2/action.rb +217 -0
  9. data/lib/engine2/core.rb +572 -0
  10. data/lib/engine2/handler.rb +134 -0
  11. data/lib/engine2/meta.rb +969 -0
  12. data/lib/engine2/meta/decode_meta.rb +110 -0
  13. data/lib/engine2/meta/delete_meta.rb +73 -0
  14. data/lib/engine2/meta/form_meta.rb +144 -0
  15. data/lib/engine2/meta/infra_meta.rb +292 -0
  16. data/lib/engine2/meta/link_meta.rb +133 -0
  17. data/lib/engine2/meta/list_meta.rb +284 -0
  18. data/lib/engine2/meta/save_meta.rb +63 -0
  19. data/lib/engine2/meta/view_meta.rb +22 -0
  20. data/lib/engine2/model.rb +390 -0
  21. data/lib/engine2/models/Files.rb +38 -0
  22. data/lib/engine2/models/UserInfo.rb +24 -0
  23. data/lib/engine2/post_bootstrap.rb +83 -0
  24. data/lib/engine2/pre_bootstrap.rb +27 -0
  25. data/lib/engine2/scheme.rb +202 -0
  26. data/lib/engine2/templates.rb +229 -0
  27. data/lib/engine2/type_info.rb +342 -0
  28. data/lib/engine2/version.rb +9 -0
  29. data/public/assets/javascripts.js +13 -0
  30. data/public/assets/styles.css +4 -0
  31. data/public/css/angular-motion.css +1022 -0
  32. data/public/css/angular-ui-tree.min.css +1 -0
  33. data/public/css/app.css +196 -0
  34. data/public/css/bootstrap-additions.css +1560 -0
  35. data/public/css/bootstrap.min.css +11 -0
  36. data/public/css/font-awesome.min.css +4 -0
  37. data/public/favicon.ico +0 -0
  38. data/public/fonts/FontAwesome.otf +0 -0
  39. data/public/fonts/fontawesome-webfont.eot +0 -0
  40. data/public/fonts/fontawesome-webfont.svg +655 -0
  41. data/public/fonts/fontawesome-webfont.ttf +0 -0
  42. data/public/fonts/fontawesome-webfont.woff +0 -0
  43. data/public/fonts/fontawesome-webfont.woff2 +0 -0
  44. data/public/fonts/glyphicons-halflings-regular.eot +0 -0
  45. data/public/fonts/glyphicons-halflings-regular.svg +288 -0
  46. data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  47. data/public/fonts/glyphicons-halflings-regular.woff +0 -0
  48. data/public/fonts/glyphicons-halflings-regular.woff2 +0 -0
  49. data/public/images/file.png +0 -0
  50. data/public/images/folder-closed.png +0 -0
  51. data/public/images/folder.png +0 -0
  52. data/public/images/node-closed-2.png +0 -0
  53. data/public/images/node-closed-light.png +0 -0
  54. data/public/images/node-closed.png +0 -0
  55. data/public/images/node-opened-2.png +0 -0
  56. data/public/images/node-opened-light.png +0 -0
  57. data/public/images/node-opened.png +0 -0
  58. data/public/img/ajax-loader-dark.gif +0 -0
  59. data/public/img/ajax-loader-light.gif +0 -0
  60. data/public/img/ajax-loader.gif +0 -0
  61. data/public/js/angular-animate.js +4115 -0
  62. data/public/js/angular-cookies.js +322 -0
  63. data/public/js/angular-local-storage.js +455 -0
  64. data/public/js/angular-route.js +1022 -0
  65. data/public/js/angular-sanitize.js +717 -0
  66. data/public/js/angular-strap.js +4339 -0
  67. data/public/js/angular-strap.tpl.js +43 -0
  68. data/public/js/angular-ui-tree.js +1569 -0
  69. data/public/js/angular.js +30714 -0
  70. data/public/js/i18n/angular-locale_pl.js +115 -0
  71. data/public/js/lodash.custom.min.js +97 -0
  72. data/public/js/ng-file-upload-shim.min.js +2 -0
  73. data/public/js/ng-file-upload.min.js +3 -0
  74. data/views/app.coffee +3 -0
  75. data/views/engine2.coffee +557 -0
  76. data/views/engine2actions.coffee +849 -0
  77. data/views/engine2templates.coffee +0 -0
  78. data/views/fields/blob.slim +22 -0
  79. data/views/fields/bs_select.slim +10 -0
  80. data/views/fields/bsselect_picker.slim +18 -0
  81. data/views/fields/bsselect_picker_opt.slim +22 -0
  82. data/views/fields/checkbox.slim +11 -0
  83. data/views/fields/checkbox_buttons.slim +6 -0
  84. data/views/fields/checkbox_buttons_opt.slim +8 -0
  85. data/views/fields/currency.slim +10 -0
  86. data/views/fields/date.slim +21 -0
  87. data/views/fields/date_range.slim +44 -0
  88. data/views/fields/date_time.slim +42 -0
  89. data/views/fields/datetime.slim +42 -0
  90. data/views/fields/decimal.slim +11 -0
  91. data/views/fields/decimal_date.slim +22 -0
  92. data/views/fields/decimal_time.slim +26 -0
  93. data/views/fields/email.slim +13 -0
  94. data/views/fields/file_store.slim +61 -0
  95. data/views/fields/input_text.slim +14 -0
  96. data/views/fields/integer.slim +11 -0
  97. data/views/fields/list_bsselect.slim +18 -0
  98. data/views/fields/list_bsselect_opt.slim +21 -0
  99. data/views/fields/list_buttons.slim +3 -0
  100. data/views/fields/list_buttons_opt.slim +5 -0
  101. data/views/fields/list_select.slim +11 -0
  102. data/views/fields/list_select_opt.slim +15 -0
  103. data/views/fields/password.slim +14 -0
  104. data/views/fields/radio_checkbox.slim +10 -0
  105. data/views/fields/scaffold.slim +2 -0
  106. data/views/fields/scaffold_picker.slim +20 -0
  107. data/views/fields/select_picker.slim +12 -0
  108. data/views/fields/select_picker_opt.slim +16 -0
  109. data/views/fields/text_area.slim +10 -0
  110. data/views/fields/time.slim +22 -0
  111. data/views/fields/typeahead_picker.slim +25 -0
  112. data/views/index.slim +44 -0
  113. data/views/infra/index.slim +5 -0
  114. data/views/infra/inspect.slim +81 -0
  115. data/views/modals/close_m.slim +15 -0
  116. data/views/modals/confirm_m.slim +19 -0
  117. data/views/modals/empty_m.slim +12 -0
  118. data/views/modals/menu_m.slim +13 -0
  119. data/views/modals/yes_no_m.slim +19 -0
  120. data/views/panels/menu_m.slim +9 -0
  121. data/views/scaffold/confirm.slim +3 -0
  122. data/views/scaffold/fields.slim +10 -0
  123. data/views/scaffold/form.slim +11 -0
  124. data/views/scaffold/list.slim +42 -0
  125. data/views/scaffold/message.slim +3 -0
  126. data/views/scaffold/search.slim +20 -0
  127. data/views/scaffold/view.slim +18 -0
  128. data/views/search_fields/bsmselect_picker.slim +25 -0
  129. data/views/search_fields/bsselect_picker.slim +24 -0
  130. data/views/search_fields/checkbox.slim +11 -0
  131. data/views/search_fields/checkbox2.slim +14 -0
  132. data/views/search_fields/checkbox_buttons.slim +10 -0
  133. data/views/search_fields/date_range.slim +46 -0
  134. data/views/search_fields/decimal_date_range.slim +47 -0
  135. data/views/search_fields/input_text.slim +18 -0
  136. data/views/search_fields/integer.slim +18 -0
  137. data/views/search_fields/integer_range.slim +27 -0
  138. data/views/search_fields/list_bsmselect.slim +24 -0
  139. data/views/search_fields/list_bsselect.slim +22 -0
  140. data/views/search_fields/list_buttons.slim +8 -0
  141. data/views/search_fields/list_select.slim +17 -0
  142. data/views/search_fields/scaffold_picker.slim +19 -0
  143. data/views/search_fields/select_picker.slim +17 -0
  144. data/views/search_fields/typeahead_picker.slim +25 -0
  145. metadata +327 -0
@@ -0,0 +1,18 @@
1
+ /.col-lg-7.col-md-8.col-sm-12
2
+ div e2-input-cols="{{::action.meta.info[f].render.length}}"
3
+ button.btn.btn-default.btn-sm [
4
+ type="button"
5
+ ng-init="info = action.meta.info[f]"
6
+ ng-model="action.record[f]"
7
+ bs-options="v[0] as v[1] for v in info.render.list"
8
+ data-html="true"
9
+ ng-disabled="info.disabled"
10
+ ng-class="info.render.class"
11
+ class="form-control input-sm"
12
+
13
+ data-animation="{{::info.render.animation}}"
14
+ data-placeholder="..."
15
+ bs-select=""
16
+
17
+ e2-field=""
18
+ ]
@@ -0,0 +1,21 @@
1
+ /.col-lg-7.col-md-8.col-sm-12
2
+ div e2-input-cols="{{::action.meta.info[f].render.length}}"
3
+ .input-group.input-group-sm
4
+ button.btn.btn-default [
5
+ type="button"
6
+ ng-init="info = action.meta.info[f]"
7
+ ng-model="action.record[f]"
8
+ bs-options="v[0] as v[1] for v in info.render.list"
9
+ data-html="true"
10
+ ng-disabled="info.disabled"
11
+ ng-class="info.render.class"
12
+ class="form-control input-sm"
13
+ e2-field=""
14
+
15
+ data-animation="{{::info.render.animation}}"
16
+ data-placeholder="..."
17
+ bs-select=""
18
+ ]
19
+ .input-group-btn
20
+ a.btn.btn-default ng-disabled="action.meta.info[f].disabled || action.record[f] == null" ng-click="action.record[f] = null"
21
+ span.glyphicon.glyphicon-remove
@@ -0,0 +1,3 @@
1
+ .col-lg-12
2
+ .btn-group.btn-group-sm ng-init="info = action.meta.info[f]" ng-model="action.record[f]" e2-field=""
3
+ a.btn.btn-default ng-class="action.record[f] == v[0] && 'active'" ng-click="action.record[f] = v[0]" ng-repeat="v in info.render.list" ng-bind-html="v[1]" ng-disabled="info.disabled"
@@ -0,0 +1,5 @@
1
+ .col-lg-12
2
+ .btn-group.btn-group-sm ng-init="info = action.meta.info[f]" ng-model="action.record[f]" e2-field=""
3
+ a.btn.btn-default ng-class="action.record[f] == v[0] && 'active'" ng-click="action.record[f] = v[0]" ng-repeat="v in info.render.list" ng-bind-html="v[1]" ng-disabled="info.disabled"
4
+ a.btn.btn-default ng-disabled="action.record[f] == null || info.disabled" ng-click="action.record[f] = null"
5
+ span.glyphicon.glyphicon-remove
@@ -0,0 +1,11 @@
1
+ /.col-lg-7.col-md-8.col-sm-12
2
+ div e2-input-cols="{{::action.meta.info[f].render.length}}"
3
+ select.btn.btn-default.btn-sm [
4
+ ng-init="info = action.meta.info[f]"
5
+ ng-model="action.record[f]"
6
+ ng-options="v[0] as v[1] for v in info.render.list"
7
+ ng-disabled="info.disabled"
8
+ ng-class="info.render.class"
9
+ class="form-control input-sm"
10
+ e2-field=""
11
+ ]
@@ -0,0 +1,15 @@
1
+ /.col-lg-7.col-md-8.col-sm-12
2
+ div e2-input-cols="{{::action.meta.info[f].render.length}}"
3
+ .input-group.input-group-sm
4
+ select.btn.btn-default.btn-sm [
5
+ ng-init="info = action.meta.info[f]"
6
+ ng-model="action.record[f]"
7
+ ng-options="v[0] as v[1] for v in info.render.list"
8
+ ng-disabled="info.disabled"
9
+ ng-class="info.render.class"
10
+ class="form-control input-sm"
11
+ e2-field=""
12
+ ]
13
+ .input-group-btn
14
+ a.btn.btn-default ng-disabled="action.meta.info[f].disabled || action.record[f] == null" ng-click="action.record[f] = null"
15
+ span.glyphicon.glyphicon-remove
@@ -0,0 +1,14 @@
1
+ /.col-lg-8.col-md-9.col-sm-12
2
+ div e2-input-cols="{{::action.meta.info[f].render.length}}"
3
+ .input-group.input-group-sm
4
+ input [
5
+ ng-init="info = action.meta.info[f]"
6
+ type="password"
7
+ ng-model="action.record[f]"
8
+ maxlength="{{::info.render.length}}"
9
+ ng-disabled="info.disabled"
10
+ class="form-control input-sm"
11
+ ng-class="::info.render.class"
12
+ e2-field=""
13
+ ]
14
+ span.input-group-addon: span.glyphicon.glyphicon-asterisk
@@ -0,0 +1,10 @@
1
+ .col-lg-3
2
+ .btn-group.btn-group-sm [
3
+ ng-init="info = action.meta.info[f]; action.record[f] = action.record[f] || info.render.false_value"
4
+ ng-model="action.record[f]"
5
+ bs-buttons-radio=""
6
+ e2-field=""
7
+ ]
8
+
9
+ button.btn.btn-default type="button" value="{{::info.render.true_value}}": span.glyphicon.glyphicon-ok
10
+ button.btn.btn-default type="button" value="{{::info.render.false_value}}": span.glyphicon.glyphicon-remove
@@ -0,0 +1,2 @@
1
+ .col-lg-10.col-md-10.col-sm-10
2
+ e2-action action="action.meta.info[f].assoc"
@@ -0,0 +1,20 @@
1
+ e2-action action="[action.meta.info[f].assoc, 'decode']"
2
+ .col-lg-6.col-md-6.col-sm-8
3
+ .input-group.input-group-sm
4
+ a.btn.btn-default [
5
+ ng-init="info = action.meta.info[f]"
6
+ ng-disabled="info.disabled"
7
+ class="form-control"
8
+ ng-click="!info.disabled && action.open()"
9
+ ]
10
+ span ng-bind-html="action.decode"
11
+
12
+ .input-group-btn
13
+ a.btn.btn-default ng-disabled="info.disabled" ng-click="!info.disabled && action.open()": span.glyphicon.glyphicon-list
14
+ a.btn.btn-default ng-disabled="info.disabled || action.decode == null" ng-click="!info.disabled && action.reset()": span.glyphicon.glyphicon-remove
15
+
16
+ input [
17
+ type="hidden"
18
+ ng-model="action.record[f]"
19
+ e2-field=""
20
+ ]
@@ -0,0 +1,12 @@
1
+ e2-action action="[action.meta.info[f].assoc, 'list']"
2
+ .col-lg-7.col-md-8.col-sm-12
3
+ select.btn.btn-default.btn-sm [
4
+ ng-init="info = action.meta.info[f]"
5
+ ng-model="action.selected"
6
+ ng-options="v.id as v.value for v in action.values"
7
+ ng-change="action.change()"
8
+ ng-disabled="info.disabled"
9
+ ng-class="info.render.class"
10
+ class="form-control input-sm"
11
+ e2-field=""
12
+ ]
@@ -0,0 +1,16 @@
1
+ e2-action action="[action.meta.info[f].assoc, 'list']"
2
+ .col-lg-7.col-md-12.col-sm-12
3
+ .input-group.input-group-sm
4
+ select.btn.btn-default.btn-sm [
5
+ ng-init="info = action.meta.info[f]"
6
+ ng-model="action.selected"
7
+ ng-options="v.id as v.value for v in action.values"
8
+ ng-change="action.change()"
9
+ ng-disabled="info.disabled"
10
+ ng-class="info.render.class"
11
+ class="form-control"
12
+ e2-field=""
13
+ ]
14
+ .input-group-btn
15
+ a.btn.btn-default ng-disabled="info.disabled || !action.selected" ng-click="action.reset()"
16
+ span.glyphicon.glyphicon-remove
@@ -0,0 +1,10 @@
1
+ .col-lg-11
2
+ textarea [
3
+ ng-init="info = action.meta.info[f]"
4
+ ng-model="action.record[f]"
5
+ cols="{{info.render.cols}}"
6
+ rows="{{info.render.rows}}"
7
+ ng-disabled="info.disabled"
8
+ class="form-control"
9
+ e2-field=""
10
+ ]
@@ -0,0 +1,22 @@
1
+ .col-lg-3.col-md-3.col-sm-5
2
+ .input-group.input-group-sm
3
+ input.btn.btn-default [
4
+ ng-init="info = action.meta.info[f]"
5
+ type="text"
6
+ class="form-control"
7
+ ng-model="value"
8
+ ng-disabled="info.disabled"
9
+
10
+ data-time-format="{{::info.render.format}}"
11
+ data-animation="{{::info.render.animation}}"
12
+ bs-timepicker=""
13
+ e2-datepicker=""
14
+ e2-model-format="{{::info.render.model_format}}"
15
+ data-autoclose="1"
16
+ data-arrow-behavior="picker"
17
+
18
+ e2-force-view-value=""
19
+ e2-field=""
20
+ ]
21
+ .input-group-btn data-toggle="datepicker"
22
+ a.btn.btn-default: span.glyphicon.glyphicon-time
@@ -0,0 +1,25 @@
1
+ e2-action action="[action.meta.info[f].assoc, 'typeahead']"
2
+ .col-lg-7.col-md-8.col-sm-12
3
+ .input-group.input-group-sm
4
+ input.btn.btn-default [
5
+ type="text"
6
+ ng-init="info = action.meta.info[f]"
7
+ ng-model="action.decode"
8
+ bs-options="v.value for v in action.load($viewValue)"
9
+ ng-keypress="action.key_pressed = true"
10
+
11
+ ng-disabled="info.disabled"
12
+ ng-class="info.render.class"
13
+ class="form-control"
14
+
15
+ data-animation="{{::info.render.animation}}"
16
+ placeholder="..."
17
+ data-html="true"
18
+ data-limit="10"
19
+ bs-typeahead=""
20
+ e2-field=""
21
+ ]
22
+ span.input-group-addon: span.glyphicon.glyphicon-font
23
+ .input-group-btn
24
+ a.btn.btn-default ng-disabled="info.disabled || action.decode == null" ng-click="!info.disabled && action.reset()"
25
+ span.glyphicon.glyphicon-off
@@ -0,0 +1,44 @@
1
+ doctype html
2
+ html
3
+ head
4
+ title App
5
+ meta http-equiv="x-ua-compatible" content="IE=edge"
6
+ link rel="stylesheet" href="css/bootstrap.min.css"
7
+ link rel="stylesheet" href="assets/styles.css"
8
+ link rel="stylesheet" href="css/app.css"
9
+
10
+ script type="text/javascript" src="assets/javascripts.js"
11
+ script type="text/javascript" src="js/engine2.js"
12
+ script type="text/javascript" src="js/engine2actions.js"
13
+ script type="text/javascript" src="js/engine2templates.js"
14
+ script type="text/javascript" src="js/app.js"
15
+
16
+ body ng-app="app"
17
+ e2-action ng-controller="AppController"
18
+ .nav.navbar.navbar-default
19
+ .container
20
+ .navbar-header
21
+ a.navbar-brand
22
+ | App
23
+ span.glyphicon.glyphicon-home<
24
+ button.navbar-toggle type="button" data-toggle="collapse" data-target="#collapse1"
25
+ span.icon-bar
26
+ span.icon-bar
27
+ span.icon-bar
28
+
29
+ .navbar-collapse.collapse id="collapse1"
30
+ ul.nav.navbar-nav.navbar-left
31
+ / li: a href="#": span.glyphicon.glyphicon-home
32
+ li: .loader: img src="img/ajax-loader.gif"
33
+ div e2-action='' action="'menu!'"
34
+
35
+ ul.nav.navbar-nav.navbar-right
36
+ li
37
+ .navbar-form
38
+ div e2-action='' action="'infra!'" invoke="true"
39
+ li
40
+ .navbar-text
41
+
42
+ .container
43
+ ng-view
44
+
@@ -0,0 +1,5 @@
1
+ div
2
+ span.badge.badge-primary ng-if="action.user"
3
+ | Zalogowany: {{action.user.name}}
4
+ span< e2-button-set="action.meta.menus.menu"
5
+
@@ -0,0 +1,81 @@
1
+ e2-action action="'inspect'"
2
+ div bs-tabs="" ng-if="'true'"
3
+ br
4
+ div title="API" bs-pane=""
5
+ .row
6
+ .col-lg-4
7
+ .panel.panel-default
8
+ .panel-body
9
+ script type="text/ng-template" id="nodes_renderer.html"
10
+ div data-nodrag="" ng-init="stack = stack.concat([$index])"
11
+ span.glyphicon.glyphicon-cog ng-if="node.terminal"
12
+ a ng-click="action.open(stack, node, collapsed, true); toggle(this)" ng-if="!node.terminal"
13
+ span.glyphicon ng-class="{'glyphicon-play-circle': collapsed && node.access, 'glyphicon-download': !collapsed, 'glyphicon-exclamation-sign': collapsed && !node.access}"
14
+ span< ng-bind="node.name + ' ' + node.number" ng-click="action.open(stack, node, collapsed, false)" style="cursor: pointer; {{action.number == node.number && 'font-weight: bold;'}}"
15
+ ol ui-tree-nodes="" ng-model="node.actions" ng-class="{hidden: collapsed}"
16
+ li ng-repeat="node in node.actions" ui-tree-node="" data-collapsed="true" ng-include="'nodes_renderer.html'"
17
+ div ui-tree="" id="tree-root"
18
+ ol ui-tree-nodes="" ng-model="action.tree.actions"
19
+ li ng-repeat="node in action.tree.actions" ui-tree-node="" data-collapsed="true" ng-include="'nodes_renderer.html'" ng-init="stack = []"
20
+
21
+ .col-lg-8
22
+ .panel.panel-default
23
+ .panel-body
24
+ div bs-tabs="" bs-active-pane="actionTab" ng-init="actionTab = 0"
25
+ div title="Action" bs-pane=""
26
+ br
27
+ pre ng-bind="action.action_json | json"
28
+ div title="Meta" bs-pane=""
29
+ br
30
+ pre ng-bind="action.meta_json | json"
31
+ div title="State" bs-pane=""
32
+ br
33
+ pre ng-bind="action.action_state | json"
34
+
35
+ div title="Model" bs-pane=""
36
+ .row
37
+ .col-lg-4
38
+ .panel.panel-default
39
+ .panel-body
40
+ select.btn.btn-default [
41
+ ng-model="action.activeDB"
42
+ ng-options="db.name || 'dummy' for db in action.models"
43
+ class="form-control"
44
+ ng-change="action.model = (action.activeModel = (action.activeAssoc = undefined))"
45
+ ]
46
+ option value="" Database
47
+ hr
48
+ select.btn.btn-default [
49
+ ng-model="action.activeModel"
50
+ ng-options="m for m in action.activeDB.models"
51
+ class="form-control"
52
+ ng-change="action.activeModel ? action.invoke_action('model_info', {db: action.activeDB.name, model: action.activeModel}) : (action.model = (action.activeAssoc = undefined))"
53
+ ]
54
+ option value="" Model
55
+ .col-lg-8
56
+ .panel.panel-default
57
+ .panel-body
58
+ div bs-tabs="" bs-active-pane="modelTab" ng-init="modelTab = 0"
59
+ div title="Model" bs-pane=""
60
+ br
61
+ pre ng-bind="action.model.info | json"
62
+ div title="Schema" bs-pane=""
63
+ br
64
+ pre ng-bind="action.model.schema | json"
65
+ div title="Type info" bs-pane=""
66
+ br
67
+ pre ng-bind="action.model.type_info | json"
68
+ div title="Associations" bs-pane="" ng-if="action.model && action.has_assoc(action.model)"
69
+ br
70
+ .row
71
+ .col-lg-6
72
+ select.btn.btn-default [
73
+ ng-model="action.activeAssoc"
74
+ ng-options="key for (key, value) in action.model.assoc"
75
+ class="form-control"
76
+ ]
77
+ option value="" Association
78
+ br
79
+ .row
80
+ .col-lg-12
81
+ pre ng-bind="action.activeAssoc | json"
@@ -0,0 +1,15 @@
1
+ .modal ng-class="action.meta.panel.class"
2
+ .modal-dialog
3
+ .modal-content
4
+ .modal-header
5
+ button.close type="button" ng-click="$hide()" &times;
6
+ h4.modal-title ng-bind-html="action.meta.panel.title"
7
+
8
+ .modal-body
9
+ | modal-content-to-replace
10
+
11
+ .modal-footer
12
+ .loader.pull-left: img src="img/ajax-loader.gif"
13
+ .btn.btn-default ng-click="$hide()"
14
+ span.glyphicon.glyphicon-remove>
15
+ | Zamknij
@@ -0,0 +1,19 @@
1
+ .modal ng-class="action.meta.panel.class"
2
+ .modal-dialog
3
+ .modal-content
4
+ .modal-header
5
+ button.close type="button" ng-click="$hide()" &times;
6
+ h4.modal-title ng-bind-html="action.meta.panel.title"
7
+
8
+ .modal-body
9
+ | modal-content-to-replace
10
+
11
+ .modal-footer
12
+ .loader.pull-left: img src="img/ajax-loader.gif"
13
+ .btn-group
14
+ .btn.btn-default ng-click="action.confirm()"
15
+ span.glyphicon.glyphicon-ok>
16
+ | Ok
17
+ .btn.btn-default ng-click="$hide()"
18
+ span.glyphicon.glyphicon-remove>
19
+ | Anuluj
@@ -0,0 +1,12 @@
1
+ .modal ng-class="action.meta.panel.class"
2
+ .modal-dialog
3
+ .modal-content
4
+ .modal-header
5
+ button.close type="button" ng-click="$hide()" &times;
6
+ h4 ng-bind-html="action.meta.panel.title"
7
+
8
+ .modal-body
9
+ | modal-content-to-replace
10
+
11
+ .modal-footer
12
+ .loader.pull-left: img src="img/ajax-loader.gif"
@@ -0,0 +1,13 @@
1
+ .modal ng-class="action.meta.panel.class"
2
+ .modal-dialog
3
+ .modal-content
4
+ .modal-header
5
+ button.close type="button" ng-click="$hide()" &times;
6
+ h4.modal-title ng-bind-html="action.meta.panel.title"
7
+
8
+ .modal-body
9
+ | modal-content-to-replace
10
+
11
+ .modal-footer
12
+ .loader.pull-left: img src="img/ajax-loader.gif"
13
+ div e2-button-set="action.meta.menus.panel_menu"
@@ -0,0 +1,19 @@
1
+ .modal ng-class="action.meta.panel.class"
2
+ .modal-dialog
3
+ .modal-content
4
+ .modal-header
5
+ button.close type="button" ng-click="$hide()" &times;
6
+ h4.modal-title ng-bind-html="action.meta.panel.title"
7
+
8
+ .modal-body
9
+ | modal-content-to-replace
10
+
11
+ .modal-footer
12
+ .loader.pull-left: img src="img/ajax-loader.gif"
13
+ .btn-group
14
+ .btn.btn-default ng-click="action.yes(); $hide()"
15
+ span.glyphicon.glyphicon-ok>
16
+ | Tak
17
+ .btn.btn-default ng-click="action.no(); $hide()"
18
+ span.glyphicon.glyphicon-remove>
19
+ | Nie