bulutfon_dashboard 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +66 -0
- data/Rakefile +36 -0
- data/app/assets/fonts/fontcustom_d9192ef5338659432e550700796cc26b.eot +0 -0
- data/app/assets/fonts/fontcustom_d9192ef5338659432e550700796cc26b.svg +164 -0
- data/app/assets/fonts/fontcustom_d9192ef5338659432e550700796cc26b.ttf +0 -0
- data/app/assets/fonts/fontcustom_d9192ef5338659432e550700796cc26b.woff +0 -0
- data/app/assets/images/bulutfon_dashboard/screenshot-step-1.png +0 -0
- data/app/assets/images/bulutfon_dashboard/screenshot-step-2.png +0 -0
- data/app/assets/images/bulutfon_dashboard/screenshot-step-3.png +0 -0
- data/app/assets/javascripts/bulutfon_dashboard/application.js +13 -0
- data/app/assets/javascripts/bulutfon_dashboard/audiojs/audiojs-player-graphics.gif +0 -0
- data/app/assets/javascripts/bulutfon_dashboard/audiojs/audiojs.js.erb +695 -0
- data/app/assets/javascripts/bulutfon_dashboard/audiojs/audiojs.swf +0 -0
- data/app/assets/javascripts/bulutfon_dashboard/cdrs.js +19 -0
- data/app/assets/stylesheets/bulutfon_dashboard/application.css +15 -0
- data/app/assets/stylesheets/bulutfon_dashboard/bulutfon-fonts.css.sass +114 -0
- data/app/controllers/bulutfon_dashboard/application_controller.rb +28 -0
- data/app/controllers/bulutfon_dashboard/base_controller.rb +4 -0
- data/app/controllers/bulutfon_dashboard/bulutfon_users_controller.rb +59 -0
- data/app/controllers/bulutfon_dashboard/cdrs_controller.rb +27 -0
- data/app/controllers/bulutfon_dashboard/dashboards_controller.rb +15 -0
- data/app/helpers/bulutfon_dashboard/application_helper.rb +4 -0
- data/app/helpers/bulutfon_dashboard/cdrs_helper.rb +145 -0
- data/app/models/bulutfon_dashboard/api_user.rb +19 -0
- data/app/models/bulutfon_dashboard/bulutfon_user.rb +21 -0
- data/app/models/bulutfon_dashboard/cdr.rb +54 -0
- data/app/views/bulutfon_dashboard/bulutfon_users/_form.html.haml +24 -0
- data/app/views/bulutfon_dashboard/bulutfon_users/edit.html.haml +3 -0
- data/app/views/bulutfon_dashboard/bulutfon_users/new.html.haml +3 -0
- data/app/views/bulutfon_dashboard/bulutfon_users/show.html.haml +93 -0
- data/app/views/bulutfon_dashboard/cdrs/_blank.html.haml +14 -0
- data/app/views/bulutfon_dashboard/cdrs/_cdr.html.haml +12 -0
- data/app/views/bulutfon_dashboard/cdrs/_list.html.haml +24 -0
- data/app/views/bulutfon_dashboard/cdrs/index.html.haml +5 -0
- data/app/views/bulutfon_dashboard/cdrs/show.html.haml +82 -0
- data/app/views/bulutfon_dashboard/dashboards/index.html.haml +53 -0
- data/app/views/layouts/bulutfon_dashboard/application.html.erb +14 -0
- data/config/initializers/simple_form.rb +165 -0
- data/config/initializers/simple_form_bootstrap.rb +149 -0
- data/config/locales/models.tr.yml +201 -0
- data/config/locales/simple_form.en.yml +31 -0
- data/config/routes.rb +5 -0
- data/lib/bulutfon_dashboard.rb +5 -0
- data/lib/bulutfon_dashboard/engine.rb +6 -0
- data/lib/bulutfon_dashboard/version.rb +3 -0
- data/lib/generators/bulutfon_dashboard/assets_generator.rb +57 -0
- data/lib/generators/bulutfon_dashboard/controllers_generator.rb +24 -0
- data/lib/generators/bulutfon_dashboard/helpers_generator.rb +24 -0
- data/lib/generators/bulutfon_dashboard/initializers_generator.rb +14 -0
- data/lib/generators/bulutfon_dashboard/install/install_generator.rb +17 -0
- data/lib/generators/bulutfon_dashboard/migrations_generator.rb +24 -0
- data/lib/generators/bulutfon_dashboard/views_generator.rb +55 -0
- data/lib/generators/templates/assets/fonts/fontcustom_d9192ef5338659432e550700796cc26b.eot +0 -0
- data/lib/generators/templates/assets/fonts/fontcustom_d9192ef5338659432e550700796cc26b.svg +164 -0
- data/lib/generators/templates/assets/fonts/fontcustom_d9192ef5338659432e550700796cc26b.ttf +0 -0
- data/lib/generators/templates/assets/fonts/fontcustom_d9192ef5338659432e550700796cc26b.woff +0 -0
- data/lib/generators/templates/assets/stylesheets/bulutfon-fonts.css.sass +114 -0
- data/lib/generators/templates/controllers/base_controller.rb +9 -0
- data/lib/generators/templates/helpers/application_helper.rb +5 -0
- data/lib/generators/templates/initializers/bulutfon_dashboard.rb +2 -0
- data/lib/generators/templates/migrations/create_bulutfon_dashboard_bulutfon_users.rb +14 -0
- data/lib/tasks/bulutfon_dashboard_tasks.rake +4 -0
- data/lib/templates/erb/scaffold/_form.html.erb +13 -0
- data/test/bulutfon_dashboard_test.rb +7 -0
- data/test/controllers/bulutfon_dashboard/bulutfon_users_controller_test.rb +13 -0
- data/test/controllers/bulutfon_dashboard/cdrs_controller_test.rb +13 -0
- data/test/controllers/bulutfon_dashboard/dashboards_controller_test.rb +13 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +26 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +41 -0
- data/test/dummy/config/environments/production.rb +79 -0
- data/test/dummy/config/environments/test.rb +42 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/fixtures/bulutfon_dashboard/bulutfon_users.yml +11 -0
- data/test/integration/navigation_test.rb +8 -0
- data/test/models/bulutfon_dashboard/bulutfon_user_test.rb +9 -0
- data/test/test_helper.rb +21 -0
- metadata +221 -0
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Place all the behaviors and hooks related to the matching controller here.
|
|
2
|
+
// All this logic will automatically be available in application.js.
|
|
3
|
+
|
|
4
|
+
//= require audiojs
|
|
5
|
+
|
|
6
|
+
var ready;
|
|
7
|
+
|
|
8
|
+
ready = function() {
|
|
9
|
+
return audiojs.events.ready(function() {
|
|
10
|
+
var as;
|
|
11
|
+
as = audiojs.createAll();
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
$(document).ready(ready);
|
|
16
|
+
|
|
17
|
+
$(document).on('page:load', ready);
|
|
18
|
+
|
|
19
|
+
$(window).on('page:load', ready);
|
|
@@ -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 styles
|
|
10
|
+
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
|
11
|
+
* file per style scope.
|
|
12
|
+
*
|
|
13
|
+
*= require_tree .
|
|
14
|
+
*= require_self
|
|
15
|
+
*/
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*Icon Font: fontcustom
|
|
3
|
+
|
|
4
|
+
@font-face
|
|
5
|
+
font-family: "fontcustom"
|
|
6
|
+
src: font_url("/fonts/fontcustom_d9192ef5338659432e550700796cc26b.eot")
|
|
7
|
+
src: font_url("/fonts/fontcustom_d9192ef5338659432e550700796cc26b.eot?#iefix") format("embedded-opentype"), font_url("/fonts/fontcustom_d9192ef5338659432e550700796cc26b.woff") format("woff"), font_url("/fonts/fontcustom_d9192ef5338659432e550700796cc26b.ttf") format("truetype"), font_url("/fonts/fontcustom_d9192ef5338659432e550700796cc26b.svg#fontcustom") format("svg")
|
|
8
|
+
font-weight: normal
|
|
9
|
+
font-style: normal
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@media screen and (-webkit-min-device-pixel-ratio: 0)
|
|
13
|
+
@font-face
|
|
14
|
+
font-family: "fontcustom"
|
|
15
|
+
src: font_url("/fonts/fontcustom_d9192ef5338659432e550700796cc26b.svg#fontcustom") format("svg")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
.size-12
|
|
19
|
+
font-size: 12px
|
|
20
|
+
|
|
21
|
+
.size-14
|
|
22
|
+
font-size: 14px
|
|
23
|
+
|
|
24
|
+
.size-16
|
|
25
|
+
font-size: 16px
|
|
26
|
+
|
|
27
|
+
.size-18
|
|
28
|
+
font-size: 18px
|
|
29
|
+
|
|
30
|
+
.size-21
|
|
31
|
+
font-size: 21px
|
|
32
|
+
|
|
33
|
+
.size-24
|
|
34
|
+
font-size: 24px
|
|
35
|
+
|
|
36
|
+
.size-36
|
|
37
|
+
font-size: 36px
|
|
38
|
+
|
|
39
|
+
.size-48
|
|
40
|
+
font-size: 48px
|
|
41
|
+
|
|
42
|
+
.size-60
|
|
43
|
+
font-size: 60px
|
|
44
|
+
|
|
45
|
+
.size-72
|
|
46
|
+
font-size: 72px
|
|
47
|
+
|
|
48
|
+
[data-icon]:before
|
|
49
|
+
content: attr(data-icon)
|
|
50
|
+
display: inline-block
|
|
51
|
+
font-family: "fontcustom"
|
|
52
|
+
font-style: normal
|
|
53
|
+
font-weight: normal
|
|
54
|
+
font-variant: normal
|
|
55
|
+
line-height: 1
|
|
56
|
+
text-decoration: inherit
|
|
57
|
+
text-rendering: optimizeLegibility
|
|
58
|
+
text-transform: none
|
|
59
|
+
-moz-osx-font-smoothing: grayscale
|
|
60
|
+
-webkit-font-smoothing: antialiased
|
|
61
|
+
font-smoothing: antialiased
|
|
62
|
+
|
|
63
|
+
.icon-domestic-dark:before, .icon-domestic-light:before, .icon-local-dark:before, .icon-local-light:before, .icon-gsm-dark:before, .icon-gsm-light:before, .icon-in-dark:before, .icon-in-light:before, .icon-international-dark:before, .icon-international-light:before, .icon-out-dark:before, .icon-out-light:before
|
|
64
|
+
display: inline-block
|
|
65
|
+
font-family: "fontcustom"
|
|
66
|
+
font-style: normal
|
|
67
|
+
font-weight: normal
|
|
68
|
+
font-variant: normal
|
|
69
|
+
line-height: 1
|
|
70
|
+
text-decoration: inherit
|
|
71
|
+
text-rendering: optimizeLegibility
|
|
72
|
+
text-transform: none
|
|
73
|
+
-moz-osx-font-smoothing: grayscale
|
|
74
|
+
-webkit-font-smoothing: antialiased
|
|
75
|
+
font-smoothing: antialiased
|
|
76
|
+
|
|
77
|
+
.icon-domestic-dark:before
|
|
78
|
+
content: "\f13c"
|
|
79
|
+
|
|
80
|
+
.icon-domestic-light:before
|
|
81
|
+
content: "\f13d"
|
|
82
|
+
|
|
83
|
+
.icon-local-dark:before
|
|
84
|
+
content: "\f13e"
|
|
85
|
+
|
|
86
|
+
.icon-local-light:before
|
|
87
|
+
content: "\f13f"
|
|
88
|
+
|
|
89
|
+
.icon-gsm-dark:before
|
|
90
|
+
content: "\f148"
|
|
91
|
+
|
|
92
|
+
.icon-gsm-light:before
|
|
93
|
+
content: "\f149"
|
|
94
|
+
|
|
95
|
+
.icon-in-dark:before
|
|
96
|
+
content: "\f140"
|
|
97
|
+
|
|
98
|
+
.icon-in-light:before
|
|
99
|
+
content: "\f141"
|
|
100
|
+
|
|
101
|
+
.icon-international-dark:before
|
|
102
|
+
content: "\f142"
|
|
103
|
+
|
|
104
|
+
.icon-international-light:before
|
|
105
|
+
content: "\f143"
|
|
106
|
+
|
|
107
|
+
.icon-out-dark:before
|
|
108
|
+
content: "\f144"
|
|
109
|
+
|
|
110
|
+
.icon-out-light:before
|
|
111
|
+
content: "\f145"
|
|
112
|
+
|
|
113
|
+
.label-prim
|
|
114
|
+
background-color: #337ab7
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module BulutfonDashboard
|
|
2
|
+
class ApplicationController < BaseController
|
|
3
|
+
|
|
4
|
+
protect_from_forgery with: :exception
|
|
5
|
+
before_action :check_current_user, :set_bulutfon
|
|
6
|
+
layout BulutfonDashboard.layout || 'application'
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
def check_current_user
|
|
10
|
+
@current_user = BulutfonDashboard.current_user
|
|
11
|
+
unless @current_user.present?
|
|
12
|
+
redirect_to main_app.root_path
|
|
13
|
+
return
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def set_bulutfon
|
|
18
|
+
@token = BulutfonDashboard::BulutfonUser.find_by(user_id: @current_user.id)
|
|
19
|
+
|
|
20
|
+
unless @token.present?
|
|
21
|
+
redirect_to bulutfon_users_path
|
|
22
|
+
return
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
@bulutfon = BulutfonSDK::REST::Bulutfon.new(@token.api_token)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require_dependency 'bulutfon_dashboard/application_controller'
|
|
2
|
+
|
|
3
|
+
module BulutfonDashboard
|
|
4
|
+
class BulutfonUsersController < ApplicationController
|
|
5
|
+
skip_before_action :set_bulutfon
|
|
6
|
+
before_action :set_resource, only: [:new, :show, :edit, :update, :destroy]
|
|
7
|
+
add_breadcrumb 'Bulutfon', BulutfonDashboard::Engine.routes.url_helpers.root_path
|
|
8
|
+
add_breadcrumb I18n.t('activerecord.models.bulutfon_user'), BulutfonDashboard::Engine.routes.url_helpers.bulutfon_users_path
|
|
9
|
+
|
|
10
|
+
def show
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def new
|
|
14
|
+
add_breadcrumb t('view.new'), BulutfonDashboard::Engine.routes.url_helpers.new_bulutfon_users_path
|
|
15
|
+
if @resource.present?
|
|
16
|
+
redirect_to edit_bulutfon_users_path
|
|
17
|
+
return
|
|
18
|
+
end
|
|
19
|
+
@resource = BulutfonUser.new
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def edit
|
|
23
|
+
add_breadcrumb t('view.edit'), BulutfonDashboard::Engine.routes.url_helpers.edit_bulutfon_users_path
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def update
|
|
27
|
+
if @resource.update(bulutfon_user_params)
|
|
28
|
+
redirect_to BulutfonDashboard::Engine.routes.url_helpers.root_path
|
|
29
|
+
else
|
|
30
|
+
render :edit
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def create
|
|
35
|
+
@resource = BulutfonUser.new(bulutfon_user_params)
|
|
36
|
+
@resource.user_id = BulutfonDashboard.current_user.id
|
|
37
|
+
if @resource.save
|
|
38
|
+
redirect_to BulutfonDashboard::Engine.routes.url_helpers.root_path
|
|
39
|
+
else
|
|
40
|
+
render :new
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def destroy
|
|
45
|
+
@resource.destroy
|
|
46
|
+
redirect_to bulutfon_users_path
|
|
47
|
+
end
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def set_resource
|
|
51
|
+
@resource = BulutfonUser.find_by(user_id: BulutfonDashboard.current_user.id)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def bulutfon_user_params
|
|
55
|
+
params.require(:bulutfon_user).permit(:api_token)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require_dependency 'bulutfon_dashboard/application_controller'
|
|
2
|
+
|
|
3
|
+
module BulutfonDashboard
|
|
4
|
+
class CdrsController < ApplicationController
|
|
5
|
+
before_action :set_cdr, only: :show
|
|
6
|
+
|
|
7
|
+
add_breadcrumb 'Bulutfon', BulutfonDashboard::Engine.routes.url_helpers.root_path
|
|
8
|
+
add_breadcrumb I18n.t('activerecord.models.cdr'), BulutfonDashboard::Engine.routes.url_helpers.cdrs_path
|
|
9
|
+
|
|
10
|
+
def index
|
|
11
|
+
page = params[:page].try(:to_i) ||1
|
|
12
|
+
cdr_obj = @bulutfon.cdrs.all({page: page}).to_obj
|
|
13
|
+
@cdrs = cdr_obj.cdrs
|
|
14
|
+
@pagination = cdr_obj.pagination
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def show
|
|
18
|
+
add_breadcrumb @cdr.uuid, BulutfonDashboard::Engine.routes.url_helpers.cdr_path(@cdr.uuid)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
def set_cdr
|
|
23
|
+
cdr_hash = @bulutfon.cdrs.get(params[:id])['cdr']
|
|
24
|
+
@cdr = BulutfonDashboard::Cdr.new(cdr_hash)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require_dependency 'bulutfon_dashboard/application_controller'
|
|
2
|
+
|
|
3
|
+
module BulutfonDashboard
|
|
4
|
+
class DashboardsController < ApplicationController
|
|
5
|
+
add_breadcrumb 'Bulutfon', BulutfonDashboard::Engine.routes.url_helpers.root_path
|
|
6
|
+
|
|
7
|
+
def index
|
|
8
|
+
@details = @bulutfon.details
|
|
9
|
+
@content_count = 5
|
|
10
|
+
cdrs_open_struct = @bulutfon.cdrs.all({page: 1, limit: @content_count}).to_obj
|
|
11
|
+
@cdrs = cdrs_open_struct.cdrs
|
|
12
|
+
@user = ApiUser.new(@details)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
module BulutfonDashboard
|
|
2
|
+
module CdrsHelper
|
|
3
|
+
def direction_icon(direction, size = 36)
|
|
4
|
+
direction = direction.to_s.downcase
|
|
5
|
+
capture_haml do
|
|
6
|
+
haml_tag :span, class: "size-#{size}" do
|
|
7
|
+
haml_tag :i, class: "icon-#{direction}-dark", toggle: 'tooltip', title: t("activerecord.attributes.cdr.direction_detail.#{direction}")
|
|
8
|
+
t("activerecord.attributes.cdr.direction_detail.#{direction}")
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def call_type_icon(call_type, size = 36)
|
|
14
|
+
call_type = call_type.to_s.downcase
|
|
15
|
+
if call_type == 'voice'
|
|
16
|
+
icon_class = 'phone'
|
|
17
|
+
else
|
|
18
|
+
icon_class = 'fax'
|
|
19
|
+
end
|
|
20
|
+
capture_haml do
|
|
21
|
+
haml_tag :span, class: "size-#{size}" do
|
|
22
|
+
haml_tag :i, class: "fa fa-#{icon_class}", toggle: 'tooltip', title: t("activerecord.attributes.cdr.call_type_detail.#{call_type}")
|
|
23
|
+
t("activerecord.attributes.cdr.call_type_detail.#{call_type}")
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def sanitize_price(price, unit = nil)
|
|
29
|
+
amount = sprintf('%.2f', price)
|
|
30
|
+
if unit.present?
|
|
31
|
+
"#{amount} #{unit}"
|
|
32
|
+
else
|
|
33
|
+
amount
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def method_missing(method, *args, &block)
|
|
38
|
+
if method.to_s.include?('_path') || method.to_s.include?('_url')
|
|
39
|
+
begin
|
|
40
|
+
main_app.send(method, *args, &block)
|
|
41
|
+
rescue NoMethodError
|
|
42
|
+
super
|
|
43
|
+
end
|
|
44
|
+
else
|
|
45
|
+
super
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def pagination(count, current)
|
|
50
|
+
query = sanitize_cdr_params
|
|
51
|
+
page = count
|
|
52
|
+
|
|
53
|
+
capture_haml do
|
|
54
|
+
haml_tag :nav do
|
|
55
|
+
haml_tag :ul, class: :pagination do
|
|
56
|
+
previous_page(current, query) if current != 1
|
|
57
|
+
|
|
58
|
+
page_groups = get_paging_groups(page, current)
|
|
59
|
+
pages(page_groups[0], current, query)
|
|
60
|
+
disabled if page_groups[0].present?
|
|
61
|
+
pages(page_groups[1], current, query)
|
|
62
|
+
disabled if page_groups[2].present?
|
|
63
|
+
pages(page_groups[2], current, query)
|
|
64
|
+
next_page(current, query) if current != page
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
private
|
|
71
|
+
|
|
72
|
+
def pages(arr, current, query)
|
|
73
|
+
(arr).to_a.each do |pg|
|
|
74
|
+
query[:page] = pg
|
|
75
|
+
haml_tag :li, class: (pg == current ? 'active' : '') do
|
|
76
|
+
haml_tag :a, pg, href: "?#{query.to_query}"
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def disabled
|
|
82
|
+
haml_tag :li, class: :disabled do
|
|
83
|
+
haml_tag :a, '...', href: '#'
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def previous_page(current, query)
|
|
88
|
+
query[:page] = current - 1
|
|
89
|
+
haml_tag :li do
|
|
90
|
+
haml_tag :a, aria: {label: :Previous}, href: "?#{query.to_query}" do
|
|
91
|
+
haml_tag :span, '← Önceki', aria: {hidden: :true}
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def next_page(current, query)
|
|
97
|
+
query[:page] = current + 1
|
|
98
|
+
haml_tag :li do
|
|
99
|
+
haml_tag :a, aria: {label: :Next}, href: "?#{query.to_query}" do
|
|
100
|
+
haml_tag :span, 'Sonraki →', aria: {hidden: :true}
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def get_paging_groups(page, current)
|
|
106
|
+
total_pages = page
|
|
107
|
+
after_first_page = 3
|
|
108
|
+
arround_current_page = 5
|
|
109
|
+
current_page = current
|
|
110
|
+
middle_section = ([current_page - arround_current_page, 1].max..[current_page + arround_current_page, total_pages].min).to_a
|
|
111
|
+
first_page_section = (1..[after_first_page, total_pages].min).to_a
|
|
112
|
+
last_page_section = ([1, total_pages - after_first_page + 1].max..total_pages).to_a
|
|
113
|
+
if (total_pages / 2) > current_page
|
|
114
|
+
merge_left(middle_section, first_page_section)
|
|
115
|
+
merge_right(middle_section, last_page_section)
|
|
116
|
+
else
|
|
117
|
+
merge_right(middle_section, last_page_section)
|
|
118
|
+
merge_left(middle_section, first_page_section)
|
|
119
|
+
end
|
|
120
|
+
[first_page_section, middle_section, last_page_section]
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def merge_left(middle_section, first_page_section)
|
|
124
|
+
if (not middle_section.empty?) and middle_section.first - 1 <= first_page_section.last
|
|
125
|
+
middle_section = first_page_section | middle_section
|
|
126
|
+
first_page_section.clear
|
|
127
|
+
[middle_section, first_page_section]
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def merge_right(middle_section, last_page_section)
|
|
132
|
+
if (not middle_section.empty?) and middle_section.last + 1 >= last_page_section.first
|
|
133
|
+
middle_section = middle_section | last_page_section
|
|
134
|
+
last_page_section.clear
|
|
135
|
+
[middle_section, last_page_section]
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def sanitize_cdr_params
|
|
140
|
+
par = {page: params[:page]}
|
|
141
|
+
par.delete(:page) unless params[:page].present?
|
|
142
|
+
par
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|