bulutfon_dashboard 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|