kuppayam 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +27 -4
  3. data/app/assets/javascripts/kuppayam/utilities.js +110 -5
  4. data/app/assets/javascripts/kuppayam.js +4 -0
  5. data/app/assets/stylesheets/kuppayam/custom.css +48 -1
  6. data/app/assets/stylesheets/kuppayam.css +1 -0
  7. data/app/assets/stylesheets/wysiwyg-color.css +15 -0
  8. data/app/controllers/kuppayam/base_controller.rb +24 -3
  9. data/app/controllers/kuppayam/documents_controller.rb +104 -0
  10. data/app/controllers/kuppayam/images_controller.rb +104 -0
  11. data/app/controllers/kuppayam/import_data_controller.rb +34 -0
  12. data/app/controllers/kuppayam/resource_controller.rb +9 -0
  13. data/app/helpers/breadcrumbs_helper.rb +32 -15
  14. data/app/helpers/document_helper.rb +40 -0
  15. data/app/helpers/flash_helper.rb +0 -8
  16. data/app/helpers/image_helper.rb +57 -88
  17. data/app/helpers/notification_helper.rb +41 -0
  18. data/app/helpers/render_helper.rb +44 -5
  19. data/app/helpers/resource_helper.rb +107 -52
  20. data/app/models/document/base.rb +43 -0
  21. data/app/models/image/base.rb +52 -0
  22. data/app/models/import_data.rb +20 -0
  23. data/app/models/kuppayam/application_record.rb +5 -0
  24. data/app/uploaders/document_uploader.rb +15 -0
  25. data/app/uploaders/image_uploader.rb +90 -0
  26. data/app/views/kuppayam/documents/_crop_form.html.erb +44 -0
  27. data/app/views/kuppayam/documents/_form.html.erb +47 -0
  28. data/app/views/kuppayam/documents/_new.html.erb +9 -0
  29. data/app/views/kuppayam/documents/_photos.html.erb +16 -0
  30. data/app/views/kuppayam/documents/create.html.erb +14 -0
  31. data/app/views/kuppayam/documents/crop.html.erb +9 -0
  32. data/app/views/kuppayam/documents/edit.js.erb +7 -0
  33. data/app/views/kuppayam/documents/new.js.erb +7 -0
  34. data/app/views/kuppayam/documents/update.html.erb +14 -0
  35. data/app/views/kuppayam/images/_action_buttons.html.erb +14 -0
  36. data/app/views/kuppayam/images/_crop_form.html.erb +44 -0
  37. data/app/views/kuppayam/images/_form.html.erb +56 -0
  38. data/app/views/kuppayam/images/_index.html.erb +49 -0
  39. data/app/views/kuppayam/images/_new.html.erb +9 -0
  40. data/app/views/kuppayam/images/_photos.html.erb +16 -0
  41. data/app/views/kuppayam/images/_row.html.erb +65 -0
  42. data/app/views/kuppayam/images/create.html.erb +38 -0
  43. data/app/views/kuppayam/images/crop.html.erb +9 -0
  44. data/app/views/kuppayam/images/edit.js.erb +8 -0
  45. data/app/views/kuppayam/images/index.html.erb +26 -0
  46. data/app/views/kuppayam/images/new.js.erb +8 -0
  47. data/app/views/kuppayam/images/update.html.erb +38 -0
  48. data/app/views/kuppayam/import_data/_form.html.erb +38 -0
  49. data/app/views/kuppayam/import_data/_new.html.erb +9 -0
  50. data/app/views/kuppayam/import_data/_photos.html.erb +16 -0
  51. data/app/views/kuppayam/import_data/create.html.erb +14 -0
  52. data/app/views/kuppayam/import_data/crop.html.erb +9 -0
  53. data/app/views/kuppayam/import_data/edit.js.erb +7 -0
  54. data/app/views/kuppayam/import_data/new.js.erb +11 -0
  55. data/app/views/kuppayam/import_data/update.html.erb +14 -0
  56. data/app/views/kuppayam/workflows/parrot/_info.html.erb +15 -0
  57. data/app/views/kuppayam/workflows/parrot/create.js.erb +36 -0
  58. data/app/views/kuppayam/workflows/parrot/destroy.js.erb +22 -0
  59. data/app/views/kuppayam/workflows/parrot/edit.js.erb +10 -0
  60. data/app/views/kuppayam/workflows/parrot/index.js.erb +14 -0
  61. data/app/views/kuppayam/workflows/parrot/new.js.erb +9 -0
  62. data/app/views/kuppayam/workflows/parrot/row.js.erb +24 -0
  63. data/app/views/kuppayam/workflows/parrot/show.js.erb +13 -0
  64. data/app/views/kuppayam/workflows/parrot/update.js.erb +34 -0
  65. data/app/views/kuppayam/workflows/peacock/_info.html.erb +15 -0
  66. data/app/views/kuppayam/workflows/peacock/create.js.erb +36 -0
  67. data/app/views/kuppayam/workflows/peacock/destroy.js.erb +22 -0
  68. data/app/views/kuppayam/workflows/peacock/edit.js.erb +10 -0
  69. data/app/views/kuppayam/workflows/peacock/index.js.erb +14 -0
  70. data/app/views/kuppayam/workflows/peacock/new.js.erb +9 -0
  71. data/app/views/kuppayam/workflows/peacock/row.js.erb +24 -0
  72. data/app/views/kuppayam/workflows/peacock/show.js.erb +13 -0
  73. data/app/views/kuppayam/workflows/peacock/update.js.erb +34 -0
  74. data/app/views/layouts/kuppayam/_heading.html.erb +4 -4
  75. data/app/views/layouts/kuppayam/_navbar.html.erb +1 -1
  76. data/app/views/layouts/kuppayam/_overlays.html.erb +7 -0
  77. data/app/views/layouts/kuppayam/_sidebar.html.erb +19 -1
  78. data/app/views/layouts/kuppayam/admin.html.erb +4 -0
  79. data/app/views/layouts/kuppayam/document_upload.html.erb +16 -0
  80. data/app/views/layouts/kuppayam/image_upload.html.erb +16 -0
  81. data/config/initializers/inflections.rb +3 -0
  82. data/config/locales/kuppayam/general.yml +29 -0
  83. data/config/routes.rb +15 -0
  84. data/db/migrate/20170000000000_create_images.rb +13 -0
  85. data/db/migrate/20170000000001_create_documents.rb +13 -0
  86. data/db/migrate/20170000000002_create_import_data.rb +14 -0
  87. data/lib/kuppayam/action_view/form_helper.rb +23 -4
  88. data/lib/kuppayam/action_view/theme_helper.rb +2 -2
  89. data/lib/kuppayam/engine.rb +11 -14
  90. data/lib/kuppayam/version.rb +1 -1
  91. metadata +75 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7a18048da51c416e84bb1d9d7c1f30c936556d2
4
- data.tar.gz: e405c447b4d8f9081f19c240689656057bf10a87
3
+ metadata.gz: 226b20bec299245b0c8f99d93a0af90a10cae6fc
4
+ data.tar.gz: 95ce7b1401fe1cd1b4f65257cb4d00b19a9fe847
5
5
  SHA512:
6
- metadata.gz: 6fe6f0ab12ce1ec2d2ce217cbab6dbd7369d4ff0e1dead3659ec673e05068f8040ad7f23d70eec277ffc39339f3638449335b2a5ea148456e2d2e8cf44bf1ace
7
- data.tar.gz: 2916d5371221e8078e92a24a62ca0023c58cbd1e7082a3d1628397bc29616fce7d12b3f2ffe584fcce0fa946be3d78e779ae972b26a3dd1657bd5cf1abdc74c0
6
+ metadata.gz: ed223ebb3475a8e2622fbea00a77c3c7305c82a9f7ffc5c06770ff9140df32fd3852eb5cbab797ee228274c8d893133cf13bdf04a76e6921a03c7ff8cc453a9a
7
+ data.tar.gz: 133d8d7ebabd51088953c0d87eb7d7d68b5c830b768b1efa5fce86b61e1f52ebeaeeedc145ed6e2bfebec606e468b200c9f26fbde4a31dad0f0b0de30c9e995a
data/README.md CHANGED
@@ -1,10 +1,15 @@
1
1
  # Kuppayam
2
- Short description and motivation.
3
2
 
4
- ## Usage
5
- How to use my plugin.
3
+ Kuppayam is a basic UI to starter kit.
4
+
5
+ A basic UI starter kit - rails engine with useful helpers and bootstrap based UI modules
6
+
7
+ ## How to use Kuppayam?
8
+
9
+ just add kuppayam to gemfile and you are done.
6
10
 
7
11
  ## Installation
12
+
8
13
  Add this line to your application's Gemfile:
9
14
 
10
15
  ```ruby
@@ -22,7 +27,25 @@ $ gem install kuppayam
22
27
  ```
23
28
 
24
29
  ## Contributing
25
- Contribution directions go here.
30
+
31
+ Fork the project from the repository https://github.com/right-solutions/kuppayam
32
+
33
+ Make your changes & Send a Pull Request.
34
+
35
+ ## Gem Release Instructions
36
+
37
+ ```bash
38
+ $ gem build kuppayam.gemspec
39
+ ```
40
+
41
+ ```bash
42
+ $ gem push gem push kuppayam-0.1.1.gem
43
+ ```
44
+
45
+
26
46
 
27
47
  ## License
28
48
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
49
+
50
+
51
+
@@ -1,7 +1,6 @@
1
1
  // loadANewPage will accept a url and will load a new page
2
2
  // It can be tuned to show a lightbox showing a loading, please wait message.
3
3
  function loadANewPage(url){
4
- // showLightBoxLoading();
5
4
  window.location.href=url;
6
5
  }
7
6
 
@@ -17,18 +16,42 @@ var messageModalId = "div_modal_message";
17
16
 
18
17
  // Call this function by passing model Id, heading and a bodyContent.
19
18
  // it will pop up bootstrap 3 modal.
20
- function showGenericModal(heading, bodyContent){
19
+ function showGenericModal(heading, bodyContent, showHeading=true){
21
20
  $('#' + genericModalId + ' .modal-header .modal-title').text(heading);
22
21
  $('#' + genericModalId + ' div.modal-body-main').html(bodyContent);
23
22
  $('#' + genericModalId).modal({show: true, backdrop: 'static', keyboard: false});
23
+
24
+ if(showHeading){
25
+ $('#' + genericModalId + ' .modal-header').show();
26
+ }
27
+ else {
28
+ $('#' + genericModalId + ' .modal-header').hide();
29
+ }
30
+
31
+ setTimeout(function() {
32
+ $('#' + genericModalId).modal('handleUpdate'); //Update backdrop on modal show
33
+ $('#' + genericModalId).scrollTop(0); //reset modal to top position
34
+ }, 1000);
24
35
  }
25
36
 
26
37
  // Call this function by passing model Id, heading and a bodyContent.
27
38
  // it will pop up bootstrap 3 modal.
28
- function showLargeModal(heading, bodyContent){
39
+ function showLargeModal(heading, bodyContent, showHeading=true){
29
40
  $('#' + largeModalId + ' .modal-header .modal-title').text(heading);
30
41
  $('#' + largeModalId + ' div.modal-body-main').html(bodyContent);
31
42
  $('#' + largeModalId).modal({show: true, backdrop: 'static', keyboard: false});
43
+
44
+ if(showHeading){
45
+ $('#' + largeModalId + ' .modal-header').show();
46
+ }
47
+ else {
48
+ $('#' + largeModalId + ' .modal-header').hide();
49
+ }
50
+
51
+ setTimeout(function() {
52
+ $('#' + largeModalId).modal('handleUpdate'); //Update backdrop on modal show
53
+ $('#' + largeModalId).scrollTop(0); //reset modal to top position
54
+ }, 1000);
32
55
  }
33
56
 
34
57
  // Call this function by passing heading and a message.
@@ -39,24 +62,106 @@ function showMessageModal(heading, message, modalId){
39
62
  }
40
63
  var bodyContent = "<p>"+ message +"</p>";
41
64
  //$('#' + modalId + ' .modal-body').html("<p>"+ message +"</p>");
42
- $('#' + modalId + ' .modal-header h4.modal-title').text(heading);
65
+ $('#' + modalId + ' .modal-header .modal-title').text(heading);
43
66
  $('#' + modalId + ' div.modal-body').html(bodyContent);
44
67
  $('#' + modalId).modal({show: true, backdrop: 'static', keyboard: false});
45
68
  //$('#' + modalId + ' .modal-footer button.btn-primary').button('reset');
69
+ setTimeout(function() {
70
+ $('#' + modalId).modal('handleUpdate'); //Update backdrop on modal show
71
+ $('#' + modalId).scrollTop(0); //reset modal to top position
72
+ }, 1000);
46
73
  }
47
74
 
48
75
  function closeGenericModal(modalId){
49
76
  $('#' + genericModalId).modal('hide');
77
+
78
+ showAndHideModals();
50
79
  }
51
80
 
52
81
  function closeLargeModal(modalId){
53
- $('#' + largeModalId).modal('hide');
82
+ $('#' + largeModalId).modal('hide');
54
83
  }
55
84
 
56
85
  function closeMessageModal(modalId){
57
86
  $('#' + messageModalId).modal('hide');
87
+
88
+ showAndHideModals();
58
89
  }
59
90
 
91
+ function showAndHideModals(){
92
+ // Just hide and show other modals as there could
93
+ // be a problem with scrolling due to overlapping
94
+ // of 2 or more modals
95
+ if( ($('#' + largeModalId).data('bs.modal') || {}).isShown == true ) {
96
+ $('#' + largeModalId).modal('hide');
97
+ $('#' + largeModalId).modal('show');
98
+ }
99
+
100
+ if( ($('#' + genericModalId).data('bs.modal') || {}).isShown == true ) {
101
+ $('#' + genericModalId).modal('hide');
102
+ $('#' + genericModalId).modal('show');
103
+ }
104
+ }
105
+
106
+ function notifySuccess(title, message){
107
+ var opts = {
108
+ "closeButton": true,
109
+ "debug": false,
110
+ "positionClass": "toast-bottom-right",
111
+ "onclick": null,
112
+ "showDuration": "300",
113
+ "hideDuration": "1000",
114
+ "timeOut": "5000",
115
+ "extendedTimeOut": "1000",
116
+ "showEasing": "swing",
117
+ "hideEasing": "linear",
118
+ "showMethod": "fadeIn",
119
+ "hideMethod": "fadeOut"
120
+ };
121
+
122
+ toastr.success(message, title, opts);
123
+ }
124
+
125
+ function notifyError(title, message){
126
+ var opts = {
127
+ "closeButton": true,
128
+ "debug": false,
129
+ "positionClass": "toast-bottom-right",
130
+ "onclick": null,
131
+ "showDuration": "300",
132
+ "hideDuration": "1000",
133
+ "timeOut": "5000",
134
+ "extendedTimeOut": "1000",
135
+ "showEasing": "swing",
136
+ "hideEasing": "linear",
137
+ "showMethod": "fadeIn",
138
+ "hideMethod": "fadeOut"
139
+ };
140
+
141
+ toastr.error(message, title, opts);
142
+ }
143
+
144
+ function notifyInfo(title, message){
145
+ var opts = {
146
+ "closeButton": true,
147
+ "debug": false,
148
+ "positionClass": "toast-bottom-right",
149
+ "onclick": null,
150
+ "showDuration": "300",
151
+ "hideDuration": "1000",
152
+ "timeOut": "5000",
153
+ "extendedTimeOut": "1000",
154
+ "showEasing": "swing",
155
+ "hideEasing": "linear",
156
+ "showMethod": "fadeIn",
157
+ "hideMethod": "fadeOut"
158
+ };
159
+
160
+ toastr.info(message, title, opts);
161
+ }
162
+
163
+
164
+
60
165
  // function initPopovers(){
61
166
  // $('[data-toggle="popover"]').popover()
62
167
  // }
@@ -18,4 +18,8 @@
18
18
  //= require xenon-api.js
19
19
  //= require xenon-toggles.js
20
20
  //= require xenon-custom.js
21
+ //= require wysihtml5/lib/js/wysihtml5-0.3.0.js
22
+ //= require wysihtml5/src/bootstrap-wysihtml5.js
23
+ //= require toastr/toastr.min.js
24
+
21
25
 
@@ -5,4 +5,51 @@
5
5
  // Overriding it to white
6
6
  .alert {color: #fff !important}
7
7
  .alert p {color: #fff !important}
8
- .alert .close {color: #fff !important}
8
+ .alert .close {color: #fff !important}
9
+
10
+ .btn.btn-default.btn-only-hover,
11
+ .btn.btn-white.btn-only-hover,
12
+ .btn.btn-danger.btn-only-hover,
13
+ .btn.btn-success.btn-only-hover,
14
+ .btn.btn-primary.btn-only-hover,
15
+ .btn.btn-gray.btn-only-hover,
16
+ .btn.btn-secondary.btn-only-hover {
17
+ background-color: #fff !important;
18
+ color: #333 !important;
19
+ border: 1px solid #ddd !important;
20
+ }
21
+
22
+ .btn.btn-danger.btn-only-hover:hover{
23
+ background-color: #f2f2f2 !important;
24
+ color: #333 !important;
25
+ border: 1px solid #ddd !important;
26
+ }
27
+
28
+ .btn.btn-danger.btn-only-hover:hover{
29
+ background-color: #cc3f44 !important;
30
+ color: #fff !important;
31
+ border: 1px solid #bf3338 !important;
32
+ }
33
+
34
+ .btn.btn-success.btn-only-hover:hover{
35
+ color: #fff !important;
36
+ background-color: #72a230 !important;
37
+ border-color: #5f8628 !important;
38
+ }
39
+
40
+ .btn.btn-gray.btn-only-hover:hover{
41
+ background-color: #eee !important;
42
+ color: #333 !important;
43
+ border-color: #202122 !important;
44
+ }
45
+
46
+ .btn.btn-primary.btn-only-hover:hover{
47
+ background-color: #2c2e2f !important;
48
+ color: #fff !important;
49
+ border: 1px solid #202122 !important;
50
+ }
51
+
52
+ .btn.btn-secondary.btn-only-hover:hover{
53
+ background-color: #68b828 !important;
54
+ color: #fff !important;
55
+ }
@@ -19,5 +19,6 @@
19
19
  *= require xenon-skins.css
20
20
  *= require kuppayam/handycss.css
21
21
  *= require kuppayam/custom.css
22
+ *= require wysihtml5/src/bootstrap-wysihtml5.css
22
23
 
23
24
  */
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
+ *
13
+ *= require wysihtml5/lib/css/wysiwyg-color.css
14
+
15
+ */
@@ -2,17 +2,19 @@ module Kuppayam
2
2
  class BaseController < ActionController::Base
3
3
 
4
4
  protect_from_forgery with: :exception
5
+ rescue_from ActionController::InvalidAuthenticityToken, :with => :handle_invalid_authenticity_token
5
6
 
6
7
  layout 'kuppayam/admin'
7
8
 
8
- before_action :stylesheet_filename, :javascript_filename,
9
+ before_action :set_locale, :stylesheet_filename, :javascript_filename,
9
10
  :set_default_title, :set_navs, :parse_pagination_params,
10
- :configure_filters
11
+ :configure_filters, :configure_notification, :configure_breadcrumbs
11
12
 
12
13
  include ParamsParserHelper
13
14
  include RenderHelper
14
-
15
+
15
16
  include FlashHelper
17
+ include NotificationHelper
16
18
  include MetaTagsHelper
17
19
  include NavigationHelper
18
20
  include BreadcrumbsHelper
@@ -23,6 +25,25 @@ module Kuppayam
23
25
 
24
26
  private
25
27
 
28
+ # Setting the Locale from User Preferences
29
+ # With this approach, http://localhost:3000?locale=pt
30
+ # renders the Portuguese localization, while
31
+ # http://localhost:3000?locale=de
32
+ # loads a German localization.
33
+ def set_locale
34
+ I18n.locale = params[:locale] || I18n.default_locale
35
+ end
36
+
37
+ # Every helper method dependent on url_for
38
+ # (e.g. helpers for named routes like root_path
39
+ # or root_url, resource routes like books_path
40
+ # or books_url, etc.) will now automatically
41
+ # include the locale in the query string,
42
+ # like this: http://localhost:3001/?locale=ja.
43
+ def default_url_options
44
+ { locale: I18n.locale }
45
+ end
46
+
26
47
  def stylesheet_filename
27
48
  @stylesheet_filename = "kuppayam"
28
49
  end
@@ -0,0 +1,104 @@
1
+ module Kuppayam
2
+ class DocumentsController < Kuppayam::ResourceController
3
+
4
+ before_action :get_document_class
5
+ before_action :get_resource
6
+
7
+ def index
8
+ get_collections
9
+ end
10
+
11
+ def show
12
+ @document = @document_class.find(params[:id])
13
+ end
14
+
15
+ def new
16
+ @document = @document_class.new
17
+ end
18
+
19
+ def edit
20
+ @document = @document_class.find(params[:id])
21
+ end
22
+
23
+ def create
24
+ @document = @document_class.new
25
+ @document.documentable = @resource
26
+ @document.document = params[:document]
27
+ @document.save
28
+ set_flash_message("Document has been created successfully", :success)
29
+ render layout: "kuppayam/document_upload"
30
+ end
31
+
32
+ def update
33
+ @document = @document_class.find(params[:id])
34
+ @document.document = params[:document]
35
+ @document.save
36
+ set_flash_message("Document has been updated successfully", :success)
37
+ render layout: "kuppayam/document_upload"
38
+ end
39
+
40
+ def crop
41
+ @document = @document_class.find(params[:id])
42
+ @document.assign_attributes(document_params)
43
+ @document.document = params[:document]
44
+ @document.save
45
+ set_flash_message("Document has been cropped successfully", :success)
46
+ render layout: "kuppayam/document_upload"
47
+ end
48
+
49
+ private
50
+
51
+ def document_params
52
+ params.require(:document).permit(:crop_x, :crop_y, :crop_w, :crop_h, :document)
53
+ end
54
+
55
+ def get_document_class
56
+ @document_type = params[:document_type]
57
+ @document_class = @document_type.constantize if @document_type
58
+ end
59
+
60
+ def get_resource
61
+ @resource = params[:documentable_type].constantize.find(params[:documentable_id]) if params[:documentable_type] && params[:documentable_id]
62
+ end
63
+
64
+ def save_document
65
+ @document = @document_class.new
66
+ @document.documentable = @resource
67
+ @document.document = params[:document][:document]
68
+ @document.save
69
+ end
70
+
71
+ def get_collections
72
+ @relation = Document::Base.where("")
73
+ parse_filters
74
+ apply_filters
75
+ @documents = @relation.page(@current_page).per(@per_page)
76
+ return true
77
+ end
78
+
79
+ def apply_filters
80
+ @relation = @relation.search(@query) if @query
81
+
82
+ @order_by = "created_at desc" unless @order_by
83
+ @relation = @relation.order(@order_by)
84
+ end
85
+
86
+ def configure_filter_settings
87
+ @filter_settings = {
88
+ string_filters: [
89
+ { filter_name: :query }
90
+ ],
91
+
92
+ boolean_filters: [],
93
+
94
+ reference_filters: [],
95
+ variable_filters: [],
96
+ }
97
+ end
98
+
99
+ def configure_filter_ui_settings
100
+ @filter_ui_settings = {}
101
+ end
102
+
103
+ end
104
+ end
@@ -0,0 +1,104 @@
1
+ module Kuppayam
2
+ class ImagesController < Kuppayam::ResourceController
3
+
4
+ before_action :get_image_class
5
+ before_action :get_resource
6
+
7
+ def index
8
+ get_collections
9
+ end
10
+
11
+ def show
12
+ @image = @image_class.find(params[:id])
13
+ end
14
+
15
+ def new
16
+ @image = @image_class.new
17
+ end
18
+
19
+ def edit
20
+ @image = @image_class.find(params[:id])
21
+ end
22
+
23
+ def create
24
+ @image = @image_class.new
25
+ @image.imageable = @resource
26
+ @image.image = params[:image]
27
+ @image.save if @image.valid?
28
+ set_flash_message("Image has been created successfully", :success)
29
+ render layout: "kuppayam/image_upload"
30
+ end
31
+
32
+ def update
33
+ @image = @image_class.find(params[:id])
34
+ @image.image = params[:image]
35
+ @image.save
36
+ set_flash_message("Image has been updated successfully", :success)
37
+ render layout: "kuppayam/image_upload"
38
+ end
39
+
40
+ def crop
41
+ @image = @image_class.find(params[:id])
42
+ @image.assign_attributes(permitted_params)
43
+ @image.image = params[:image]
44
+ @image.save
45
+ set_flash_message("Image has been cropped successfully", :success)
46
+ render layout: "kuppayam/image_upload"
47
+ end
48
+
49
+ private
50
+
51
+ def permitted_params
52
+ params.require(:image).permit(:crop_x, :crop_y, :crop_w, :crop_h, :image)
53
+ end
54
+
55
+ def get_image_class
56
+ @image_type = params[:image_type]
57
+ @image_class = @image_type.constantize if @image_type
58
+ end
59
+
60
+ def get_resource
61
+ @resource = params[:imageable_type].constantize.find(params[:imageable_id]) if params[:imageable_type] && params[:imageable_id]
62
+ end
63
+
64
+ def save_image
65
+ @image = @image_class.new
66
+ @image.imageable = @resource
67
+ @image.image = params[:image][:image]
68
+ @image.save
69
+ end
70
+
71
+ def get_collections
72
+ @relation = Image::Base.where("")
73
+ parse_filters
74
+ apply_filters
75
+ @images = @relation.page(@current_page).per(@per_page)
76
+ return true
77
+ end
78
+
79
+ def apply_filters
80
+ @relation = @relation.search(@query) if @query
81
+
82
+ @order_by = "created_at desc" unless @order_by
83
+ @relation = @relation.order(@order_by)
84
+ end
85
+
86
+ def configure_filter_settings
87
+ @filter_settings = {
88
+ string_filters: [
89
+ { filter_name: :query }
90
+ ],
91
+
92
+ boolean_filters: [],
93
+
94
+ reference_filters: [],
95
+ variable_filters: [],
96
+ }
97
+ end
98
+
99
+ def configure_filter_ui_settings
100
+ @filter_ui_settings = {}
101
+ end
102
+
103
+ end
104
+ end
@@ -0,0 +1,34 @@
1
+ module Kuppayam
2
+ class ImportDataController < Kuppayam::ResourceController
3
+
4
+ private
5
+
6
+ def permitted_params
7
+ params.require(:document).permit(:document)
8
+ end
9
+
10
+ def get_collections
11
+ @relation = ImportData.where("")
12
+ @events = @relation.page(@current_page).per(@per_page)
13
+ return true
14
+ end
15
+
16
+ def resource_url(obj)
17
+ import_data_url(obj)
18
+ end
19
+
20
+ def configure_resource_controller
21
+ @resource_options = {
22
+ collection_name: :import_datas,
23
+ item_name: :import_data,
24
+ class: ImportData
25
+ }
26
+ super
27
+ end
28
+
29
+ def set_navs
30
+ set_nav("import_data")
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,9 @@
1
+ module Kuppayam
2
+ class ResourceController < Kuppayam::BaseController
3
+
4
+ include ResourceHelper
5
+
6
+ before_action :configure_resource_controller
7
+
8
+ end
9
+ end
@@ -1,25 +1,42 @@
1
1
  module BreadcrumbsHelper
2
2
 
3
+ def breadcrumbs_configuration
4
+ {}
5
+ end
6
+
7
+ def default_breadcrumbs_configuration
8
+ {
9
+ heading: "Heading",
10
+ description: "Description for the Page",
11
+ links: [{name: "Home", link: "#", icon: 'fa-home'},
12
+ {name: "Current Page", link: "#", icon: 'fa-calendar', active: true}]
13
+ }
14
+ end
15
+
16
+ def configure_breadcrumbs
17
+ @breadcrumbs = breadcrumbs_configuration
18
+ @breadcrumbs.reverse_merge!(default_breadcrumbs_configuration)
19
+ end
20
+
3
21
  # Initialize @links in your controller action
4
22
  def breadcrumb
5
- @links = [
6
- {name: "Home", link: root_path, icon: 'fa-home'},
7
- {name: "Current Page", link: root_path, active: true}] if @links.nil?
8
- content_tag(:div, class: "breadcrumb-env") do
9
- content_tag(:ol, class: "breadcrumb bc-1") do
10
- li_array = []
11
- @links.each do |item|
12
- li_class = item[:active] == true ? "active" : ""
13
- li_array << content_tag(:li, class: li_class) do
14
- i_tag = item.has_key?(:icon) ? "<i class='#{item[:icon]}'></i>" : ""
15
- if item[:active]
16
- raw("#{i_tag}<strong>#{item[:name]}</strong>")
17
- else
18
- link_to(raw("#{i_tag} #{item[:name]}"), item[:link] )
23
+ if @breadcrumbs && @breadcrumbs.has_key?(:links) && @breadcrumbs[:links].any?
24
+ content_tag(:div, class: "breadcrumb-env") do
25
+ content_tag(:ol, class: "breadcrumb bc-1") do
26
+ li_array = []
27
+ @breadcrumbs[:links].each do |item|
28
+ li_class = item[:active] == true ? "active" : ""
29
+ li_array << content_tag(:li, class: li_class) do
30
+ i_tag = item.has_key?(:icon) ? "<i class='#{item[:icon]}'></i>" : ""
31
+ if item[:active]
32
+ raw("#{i_tag}<strong>#{item[:name]}</strong>")
33
+ else
34
+ link_to(raw("#{i_tag} #{item[:name]}"), item[:link] )
35
+ end
19
36
  end
20
37
  end
38
+ raw(li_array.join(" "))
21
39
  end
22
- raw(li_array.join(" "))
23
40
  end
24
41
  end
25
42
  end