fly_admin 0.0.1 → 0.0.2
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 +4 -4
- data/app/assets/images/fly_admin/32px.png +0 -0
- data/app/assets/images/fly_admin/40px.png +0 -0
- data/app/assets/stylesheets/fly_admin/fly_admin.less +4 -0
- data/app/assets/stylesheets/fly_admin/jstree/default/style.css.erb +26 -26
- data/app/controllers/fly_admin/footers_controller.rb +1 -0
- data/app/controllers/fly_admin/subscriptions_controller.rb +35 -0
- data/app/models/fly_admin/footer.rb +14 -0
- data/app/views/fly_admin/categories/_form.html.haml +75 -26
- data/app/views/fly_admin/footers/_form.html.haml +7 -1
- data/app/views/fly_admin/footers/index.html.haml +4 -0
- data/app/views/layouts/fly_admin/_flash_messages.html.haml +1 -6
- data/db/migrate/20150428102104_add_source_type_to_fly_admin_footers.rb +5 -0
- data/lib/fly_admin/connection_api.rb +66 -0
- data/lib/fly_admin/page_cache.rb +52 -6
- data/lib/fly_admin/version.rb +1 -1
- data/lib/fly_admin.rb +1 -0
- data/lib/generators/fly_admin/install/install_generator.rb +27 -0
- data/lib/tasks/fly_admin_tasks.rake +7 -1
- data/test/dummy/config/initializers/assets.rb +1 -1
- metadata +21 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fe790ccb88c3b854aaa5eb9ed37b9cb767615443
|
|
4
|
+
data.tar.gz: 6087c084c181e4fb08e862b4c26a874dc3a38078
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d925a5ed3de9b1ef130a2b88a32e270d8b221a609c94109d3f264e8eefb08186346432119364784d2902939b4c1ca7d0dd383b771e4765fb2d1739c976080129
|
|
7
|
+
data.tar.gz: 2fe7947394dfd4af2b481988559d9db6cb405ad6930333ffaaed392e717cf918ad384216342bdffa0d2d7c5d1976c1da1f7db65bd8ce84a6c2bf8092e1a61306
|
|
Binary file
|
|
Binary file
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
box-shadow: 0 0 2px #0a6aa1;
|
|
155
155
|
}
|
|
156
156
|
.vakata-context li > a.vakata-context-parent {
|
|
157
|
-
background-image: url(<%= asset_path "data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==" %>);
|
|
157
|
+
background-image: url(<%= asset_path "fly_admin/data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==" %>);
|
|
158
158
|
background-position: right center;
|
|
159
159
|
background-repeat: no-repeat;
|
|
160
160
|
}
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
margin-right: -4px;
|
|
233
233
|
}
|
|
234
234
|
.vakata-context-rtl li > a.vakata-context-parent {
|
|
235
|
-
background-image: url(<%= asset_path "data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7" %>);
|
|
235
|
+
background-image: url(<%= asset_path "fly_admin/data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7" %>);
|
|
236
236
|
background-position: left center;
|
|
237
237
|
background-repeat: no-repeat;
|
|
238
238
|
}
|
|
@@ -358,7 +358,7 @@
|
|
|
358
358
|
}
|
|
359
359
|
#jstree-dnd.jstree-default .jstree-ok,
|
|
360
360
|
#jstree-dnd.jstree-default .jstree-er {
|
|
361
|
-
background-image: url(<%= asset_path "32px.png" %>);
|
|
361
|
+
background-image: url(<%= asset_path "fly_admin/32px.png" %>);
|
|
362
362
|
background-repeat: no-repeat;
|
|
363
363
|
background-color: transparent;
|
|
364
364
|
}
|
|
@@ -374,7 +374,7 @@
|
|
|
374
374
|
background-position: -39px -71px;
|
|
375
375
|
}
|
|
376
376
|
.jstree-default > .jstree-striped {
|
|
377
|
-
background: url(<%= asset_path "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==" %>) left top repeat;
|
|
377
|
+
background: url(<%= asset_path "fly_admin/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==" %>) left top repeat;
|
|
378
378
|
}
|
|
379
379
|
.jstree-default > .jstree-wholerow-ul .jstree-hovered,
|
|
380
380
|
.jstree-default > .jstree-wholerow-ul .jstree-clicked {
|
|
@@ -428,7 +428,7 @@
|
|
|
428
428
|
}
|
|
429
429
|
.jstree-default .jstree-node,
|
|
430
430
|
.jstree-default .jstree-icon {
|
|
431
|
-
background-image: url(<%= asset_path "32px.png" %>);
|
|
431
|
+
background-image: url(<%= asset_path "fly_admin/32px.png" %>);
|
|
432
432
|
}
|
|
433
433
|
.jstree-default .jstree-node {
|
|
434
434
|
background-position: -292px -4px;
|
|
@@ -490,7 +490,7 @@
|
|
|
490
490
|
background-size: auto 48px;
|
|
491
491
|
}
|
|
492
492
|
.jstree-default.jstree-rtl .jstree-node {
|
|
493
|
-
background-image: url(<%= asset_path "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==" %>);
|
|
493
|
+
background-image: url(<%= asset_path "fly_admin/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==" %>);
|
|
494
494
|
background-position: 100% 1px;
|
|
495
495
|
background-repeat: repeat-y;
|
|
496
496
|
}
|
|
@@ -522,16 +522,16 @@
|
|
|
522
522
|
background-position: 0 0;
|
|
523
523
|
}
|
|
524
524
|
.jstree-default > .jstree-container-ul .jstree-loading > .jstree-ocl {
|
|
525
|
-
background: url(<%= asset_path "throbber.gif" %>) center center no-repeat;
|
|
525
|
+
background: url(<%= asset_path "fly_admin/throbber.gif" %>) center center no-repeat;
|
|
526
526
|
}
|
|
527
527
|
.jstree-default .jstree-file {
|
|
528
|
-
background: url(<%= asset_path "32px.png" %>) -100px -68px no-repeat;
|
|
528
|
+
background: url(<%= asset_path "fly_admin/32px.png" %>) -100px -68px no-repeat;
|
|
529
529
|
}
|
|
530
530
|
.jstree-default .jstree-folder {
|
|
531
|
-
background: url(<%= asset_path "32px.png" %>) -260px -4px no-repeat;
|
|
531
|
+
background: url(<%= asset_path "fly_admin/32px.png" %>) -260px -4px no-repeat;
|
|
532
532
|
}
|
|
533
533
|
.jstree-default.jstree-rtl .jstree-node {
|
|
534
|
-
background-image: url(<%= asset_path "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==" %>);
|
|
534
|
+
background-image: url(<%= asset_path "fly_admin/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==" %>);
|
|
535
535
|
}
|
|
536
536
|
.jstree-default.jstree-rtl .jstree-last {
|
|
537
537
|
background: transparent;
|
|
@@ -564,7 +564,7 @@
|
|
|
564
564
|
}
|
|
565
565
|
.jstree-default-small .jstree-node,
|
|
566
566
|
.jstree-default-small .jstree-icon {
|
|
567
|
-
background-image: url(<%= asset_path "32px.png" %>);
|
|
567
|
+
background-image: url(<%= asset_path "fly_admin/32px.png" %>);
|
|
568
568
|
}
|
|
569
569
|
.jstree-default-small .jstree-node {
|
|
570
570
|
background-position: -295px -7px;
|
|
@@ -626,7 +626,7 @@
|
|
|
626
626
|
background-size: auto 36px;
|
|
627
627
|
}
|
|
628
628
|
.jstree-default-small.jstree-rtl .jstree-node {
|
|
629
|
-
background-image: url(<%= asset_path "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==" %>);
|
|
629
|
+
background-image: url(<%= asset_path "fly_admin/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==" %>);
|
|
630
630
|
background-position: 100% 1px;
|
|
631
631
|
background-repeat: repeat-y;
|
|
632
632
|
}
|
|
@@ -658,16 +658,16 @@
|
|
|
658
658
|
background-position: 0 0;
|
|
659
659
|
}
|
|
660
660
|
.jstree-default-small > .jstree-container-ul .jstree-loading > .jstree-ocl {
|
|
661
|
-
background: url(<%= asset_path "throbber.gif" %>) center center no-repeat;
|
|
661
|
+
background: url(<%= asset_path "fly_admin/throbber.gif" %>) center center no-repeat;
|
|
662
662
|
}
|
|
663
663
|
.jstree-default-small .jstree-file {
|
|
664
|
-
background: url(<%= asset_path "32px.png" %>) -103px -71px no-repeat;
|
|
664
|
+
background: url(<%= asset_path "fly_admin/32px.png" %>) -103px -71px no-repeat;
|
|
665
665
|
}
|
|
666
666
|
.jstree-default-small .jstree-folder {
|
|
667
|
-
background: url(<%= asset_path "32px.png" %>) -263px -7px no-repeat;
|
|
667
|
+
background: url(<%= asset_path "fly_admin/32px.png" %>) -263px -7px no-repeat;
|
|
668
668
|
}
|
|
669
669
|
.jstree-default-small.jstree-rtl .jstree-node {
|
|
670
|
-
background-image: url(<%= asset_path "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==" %>);
|
|
670
|
+
background-image: url(<%= asset_path "fly_admin/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==" %>);
|
|
671
671
|
}
|
|
672
672
|
.jstree-default-small.jstree-rtl .jstree-last {
|
|
673
673
|
background: transparent;
|
|
@@ -700,7 +700,7 @@
|
|
|
700
700
|
}
|
|
701
701
|
.jstree-default-large .jstree-node,
|
|
702
702
|
.jstree-default-large .jstree-icon {
|
|
703
|
-
background-image: url(<%= asset_path "32px.png" %>);
|
|
703
|
+
background-image: url(<%= asset_path "fly_admin/32px.png" %>);
|
|
704
704
|
}
|
|
705
705
|
.jstree-default-large .jstree-node {
|
|
706
706
|
background-position: -288px 0px;
|
|
@@ -762,7 +762,7 @@
|
|
|
762
762
|
background-size: auto 64px;
|
|
763
763
|
}
|
|
764
764
|
.jstree-default-large.jstree-rtl .jstree-node {
|
|
765
|
-
background-image: url(<%= asset_path "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==" %>);
|
|
765
|
+
background-image: url(<%= asset_path "fly_admin/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==" %>);
|
|
766
766
|
background-position: 100% 1px;
|
|
767
767
|
background-repeat: repeat-y;
|
|
768
768
|
}
|
|
@@ -794,16 +794,16 @@
|
|
|
794
794
|
background-position: 0 0;
|
|
795
795
|
}
|
|
796
796
|
.jstree-default-large > .jstree-container-ul .jstree-loading > .jstree-ocl {
|
|
797
|
-
background: url(<%= asset_path "throbber.gif" %>) center center no-repeat;
|
|
797
|
+
background: url(<%= asset_path "fly_admin/throbber.gif" %>) center center no-repeat;
|
|
798
798
|
}
|
|
799
799
|
.jstree-default-large .jstree-file {
|
|
800
|
-
background: url(<%= asset_path "32px.png" %>) -96px -64px no-repeat;
|
|
800
|
+
background: url(<%= asset_path "fly_admin/32px.png" %>) -96px -64px no-repeat;
|
|
801
801
|
}
|
|
802
802
|
.jstree-default-large .jstree-folder {
|
|
803
|
-
background: url(<%= asset_path "32px.png" %>) -256px 0px no-repeat;
|
|
803
|
+
background: url(<%= asset_path "fly_admin/32px.png" %>) -256px 0px no-repeat;
|
|
804
804
|
}
|
|
805
805
|
.jstree-default-large.jstree-rtl .jstree-node {
|
|
806
|
-
background-image: url( <%= asset_path "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==" %>);
|
|
806
|
+
background-image: url( <%= asset_path "fly_admin/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==" %>);
|
|
807
807
|
}
|
|
808
808
|
.jstree-default-large.jstree-rtl .jstree-last {
|
|
809
809
|
background: transparent;
|
|
@@ -816,7 +816,7 @@
|
|
|
816
816
|
*/
|
|
817
817
|
}
|
|
818
818
|
.jstree-default-responsive .jstree-icon {
|
|
819
|
-
background-image: url(<%= asset_path "40px.png" %>);
|
|
819
|
+
background-image: url(<%= asset_path "fly_admin/40px.png" %>);
|
|
820
820
|
}
|
|
821
821
|
.jstree-default-responsive .jstree-node,
|
|
822
822
|
.jstree-default-responsive .jstree-leaf > .jstree-ocl {
|
|
@@ -916,7 +916,7 @@
|
|
|
916
916
|
.jstree-default-responsive .jstree-node > .jstree-ocl,
|
|
917
917
|
.jstree-default-responsive .jstree-themeicon,
|
|
918
918
|
.jstree-default-responsive .jstree-checkbox {
|
|
919
|
-
background-image: url(<%= asset_path "40px.png" %>);
|
|
919
|
+
background-image: url(<%= asset_path "fly_admin/40px.png" %>);
|
|
920
920
|
background-size: 120px 200px;
|
|
921
921
|
}
|
|
922
922
|
.jstree-default-responsive .jstree-node {
|
|
@@ -938,11 +938,11 @@
|
|
|
938
938
|
background-position: 0 0;
|
|
939
939
|
}
|
|
940
940
|
.jstree-default-responsive .jstree-file {
|
|
941
|
-
background: url(<%= asset_path "40px.png" %>) 0 -160px no-repeat;
|
|
941
|
+
background: url(<%= asset_path "fly_admin/40px.png" %>) 0 -160px no-repeat;
|
|
942
942
|
background-size: 120px 200px;
|
|
943
943
|
}
|
|
944
944
|
.jstree-default-responsive .jstree-folder {
|
|
945
|
-
background: url(<%= asset_path "40px.png" %>) -40px -40px no-repeat;
|
|
945
|
+
background: url(<%= asset_path "fly_admin/40px.png" %>) -40px -40px no-repeat;
|
|
946
946
|
background-size: 120px 200px;
|
|
947
947
|
}
|
|
948
948
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module FlyAdmin
|
|
2
|
+
class SubscriptionsController < ActionController::Base
|
|
3
|
+
def start
|
|
4
|
+
get_cookie
|
|
5
|
+
if @customer_key.present?
|
|
6
|
+
# video can be in multiple categories , so save category_id
|
|
7
|
+
session[:video] = JSON.generate({ :id => params[:video_id], :category_id => params[:category_id], :season_id => params[:season_id] })
|
|
8
|
+
link = "http://#{@alias}/continue?key=#{@customer_key}"
|
|
9
|
+
redirect_to link
|
|
10
|
+
else
|
|
11
|
+
render nothing: true
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def splash
|
|
16
|
+
begin
|
|
17
|
+
link = params[:back_url] + "?key=#{params[:customer_key]}"
|
|
18
|
+
redirect_to link
|
|
19
|
+
rescue Exception => e
|
|
20
|
+
SUBSCRIPTION_LOG.error "#{e.message}\n\t#{e.backtrace}"
|
|
21
|
+
render nothing: true
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def get_cookie
|
|
28
|
+
if session[:alias]
|
|
29
|
+
@alias = session[:alias]
|
|
30
|
+
@customer_key = session[:customer_key]
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -4,5 +4,19 @@ module FlyAdmin
|
|
|
4
4
|
validates_presence_of :paysite_id, :country_id
|
|
5
5
|
belongs_to :paysite
|
|
6
6
|
belongs_to :country
|
|
7
|
+
state_machine :source_type, initial: 'local' do
|
|
8
|
+
event :bornpay do
|
|
9
|
+
transition any => 'bornpay'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
event :imbs do
|
|
13
|
+
transition any => 'imbs'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Если футер локальный, запросы к bornpay/imbs не делаем
|
|
17
|
+
event :local do
|
|
18
|
+
transition any => 'local'
|
|
19
|
+
end
|
|
20
|
+
end
|
|
7
21
|
end
|
|
8
22
|
end
|
|
@@ -10,8 +10,51 @@
|
|
|
10
10
|
/ This area used as dropdown edit box
|
|
11
11
|
/ end widget edit box
|
|
12
12
|
/ widget content
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
= nested_form_for(category, :html => {:class => 'smart-form', :multipart => true}) do |f|
|
|
14
|
+
- if category.errors.any?
|
|
15
|
+
- category.errors.full_messages.each do |msg|
|
|
16
|
+
= render 'layouts/error_flash_message', msg: msg
|
|
17
|
+
%section
|
|
18
|
+
.row
|
|
19
|
+
- if category.poster
|
|
20
|
+
.col-xs-3
|
|
21
|
+
= link_to category.poster_url do
|
|
22
|
+
= image_tag category.poster_url, size: '245x305', class: 'margin-left-10'
|
|
23
|
+
.col-xs-8
|
|
24
|
+
%label.textarea
|
|
25
|
+
= f.text_area :description, placeholder: 'Описание сериала', class: 'form-control ckeditor'
|
|
26
|
+
.row
|
|
27
|
+
%section.col.col-8
|
|
28
|
+
%label.input
|
|
29
|
+
= f.text_field :remote_poster_url, placeholder: 'Ссылка на постер', class: 'form-control input-sm margin-10'
|
|
30
|
+
%header
|
|
31
|
+
Дополнителная инфа
|
|
32
|
+
.row
|
|
33
|
+
%section.col.col-4
|
|
34
|
+
%label.input
|
|
35
|
+
= f.text_field :main_roles, placeholder: 'В главных ролях', class: 'margin-10 form-control input-sm'
|
|
36
|
+
%section.col.col-4
|
|
37
|
+
%label.input
|
|
38
|
+
= f.text_field :country, placeholder: 'Страна', class: 'margin-10 form-control input-sm'
|
|
39
|
+
%section.col.col-4
|
|
40
|
+
%label.input
|
|
41
|
+
= f.text_field :year, placeholder: 'Год', class: 'margin-10 form-control input-sm'
|
|
42
|
+
.row
|
|
43
|
+
%section.col.col-3
|
|
44
|
+
%lable.input
|
|
45
|
+
= f.text_field :scenario, placeholder: 'Сценарий', class: 'margin-10 form-control input-sm'
|
|
46
|
+
%section.col.col-3
|
|
47
|
+
%label.input
|
|
48
|
+
= f.text_field :director, placeholder: 'Режиссер', class: 'margin-10 form-control input-sm'
|
|
49
|
+
%section.col.col-3
|
|
50
|
+
%label.input
|
|
51
|
+
= f.text_field :time, placeholder: 'Время', class: 'margin-10 form-control input-sm'
|
|
52
|
+
%section.col.col-3
|
|
53
|
+
%label.input
|
|
54
|
+
= f.text_field :genre, placeholder: 'Жанр', class: 'margin-10 form-control input-sm'
|
|
55
|
+
%br
|
|
56
|
+
.widget-body.no-padding
|
|
57
|
+
%header Инфа о сезонах
|
|
15
58
|
%table.table.table-bordered.margin-10.table-serials{style: 'width: 500px;'}
|
|
16
59
|
%thead
|
|
17
60
|
%tr
|
|
@@ -33,34 +76,40 @@
|
|
|
33
76
|
= text_field_tag "name[#{locale}]", nil, class: 'input-xs', style: 'width: 90%;'
|
|
34
77
|
%td
|
|
35
78
|
= locale
|
|
36
|
-
|
|
37
79
|
= link_to "Остальные языки для сериалов", "#", id: 'show-categories-inputs', class: 'margin-10 btn btn-for-link btn-link'
|
|
38
80
|
= f.link_to_add 'Добавить сезон', :seasons, class: 'margin-10 btn btn-for-link btn-primary'
|
|
39
81
|
= f.fields_for :seasons do |season_form|
|
|
40
82
|
= season_form.hidden_field :id
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
%
|
|
44
|
-
%
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
83
|
+
.row
|
|
84
|
+
.col-xs-6
|
|
85
|
+
%table.table.table-bordered.margin-10{style: 'width: 500px;'}
|
|
86
|
+
%thead
|
|
87
|
+
%tr
|
|
88
|
+
%th Название сезона
|
|
89
|
+
%th на языке
|
|
90
|
+
%tbody
|
|
91
|
+
- categories_with_locales.each_with_index do |arr, index|
|
|
92
|
+
- locale = arr[0]
|
|
93
|
+
- title = arr[1]
|
|
50
94
|
|
|
51
|
-
|
|
52
|
-
|
|
95
|
+
- if index >= 2
|
|
96
|
+
- hide_class = "hidden-seasons-inputs"
|
|
53
97
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
98
|
+
%tr{class: hide_class}
|
|
99
|
+
%td
|
|
100
|
+
- if season_form.object.persisted?
|
|
101
|
+
= text_field_tag "#{season_form.object_name}[title][#{locale}]]", season_form.object.name_with_locale(locale), class: 'input-xs', style: 'width: 90%;'
|
|
102
|
+
- else
|
|
103
|
+
= text_field_tag "#{season_form.object_name}[title][#{locale}]]", nil, class: 'input-xs', style: 'width: 90%;'
|
|
104
|
+
%td
|
|
105
|
+
= locale
|
|
106
|
+
= link_to "Остальные языки для сезонов", "#", class: 'show-seasons-inputs margin-10 btn btn-for-link btn-link'
|
|
107
|
+
= season_form.link_to_remove 'Удалить сезон', class: 'margin-10 btn btn-for-link btn-danger'
|
|
108
|
+
.col-xs-4
|
|
109
|
+
%label.textarea
|
|
110
|
+
= season_form.text_field :remote_poster_url, placeholder: 'Ссылка на постер', class: 'form-control input-sm margin-10'
|
|
111
|
+
- if season_form.object.persisted?
|
|
112
|
+
= link_to season_form.object.poster_url do
|
|
113
|
+
= image_tag season_form.object.poster_url, size: '100x100', class: 'margin-left-10'
|
|
65
114
|
%footer
|
|
66
|
-
= f.submit 'Сохранить', class: 'btn btn-primary'
|
|
115
|
+
= f.submit 'Сохранить', class: 'btn btn-primary'
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
- if @footer.persisted? && @footer.source_type != 'local'
|
|
2
|
+
.alert.alert-danger.fade.in
|
|
3
|
+
%button.close{"data-dismiss" => "alert"}
|
|
4
|
+
x
|
|
5
|
+
%i.fa-fw.fa.fa-info
|
|
6
|
+
= "Внимание! Данный футер был получен из #{@footer.source_type} Поэтому, изменив его, он станет локальным и обновляться не будет!"
|
|
1
7
|
#wid-id-8.jarviswidget{"data-widget-custombutton" => "false", "data-widget-editbutton" => "false", :id => "wid-id-0", 'data-widget-colorbutton' => true}
|
|
2
8
|
%header
|
|
3
9
|
%span.widget-icon
|
|
@@ -48,4 +54,4 @@
|
|
|
48
54
|
%label.select
|
|
49
55
|
= f.select :country_id, FlyAdmin::Country.all.collect { |c| [c.name,c.id] }, {}, {class: 'input-sm'}
|
|
50
56
|
%footer
|
|
51
|
-
= f.submit 'Сохранить', class: 'btn btn-primary'
|
|
57
|
+
= f.submit 'Сохранить', class: 'btn btn-primary'
|
|
@@ -31,6 +31,8 @@
|
|
|
31
31
|
Страна
|
|
32
32
|
%th
|
|
33
33
|
Траффик
|
|
34
|
+
%th
|
|
35
|
+
Источник
|
|
34
36
|
%th
|
|
35
37
|
Опции
|
|
36
38
|
%tbody
|
|
@@ -50,6 +52,8 @@
|
|
|
50
52
|
= footer.country.try(:name)
|
|
51
53
|
%td
|
|
52
54
|
= footer.paysite.try(:name)
|
|
55
|
+
%td
|
|
56
|
+
= footer.source_type
|
|
53
57
|
%td
|
|
54
58
|
= link_to edit_footer_path(footer) do
|
|
55
59
|
%i.fa.fa-edit.fa-2x
|
|
@@ -15,12 +15,7 @@
|
|
|
15
15
|
%strong К сведению:
|
|
16
16
|
= msg
|
|
17
17
|
- when "error"
|
|
18
|
-
|
|
19
|
-
%button.close{"data-dismiss" => "alert"}
|
|
20
|
-
×
|
|
21
|
-
%i.fa-fw.fa.fa-times
|
|
22
|
-
%strong Ошибка:
|
|
23
|
-
= msg
|
|
18
|
+
= render 'layouts/error_flash_message', msg: msg
|
|
24
19
|
- else
|
|
25
20
|
.alert.alert-info.fade.in
|
|
26
21
|
%button.close{"data-dismiss" => "alert"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module FlyAdmin
|
|
2
|
+
class ConnectionApi
|
|
3
|
+
|
|
4
|
+
def self.check_user(user)
|
|
5
|
+
valid = true
|
|
6
|
+
begin
|
|
7
|
+
api_url = SiteConfig['wap_click_addr'] + "/api/check"
|
|
8
|
+
api_url = 'http://0.0.0.0:3000/api/check' if Rails.env.eql? 'development'
|
|
9
|
+
request = RestClient.get(api_url, :params => {:pass => user.customer_key})
|
|
10
|
+
hash = JSON.parse request
|
|
11
|
+
hash = hash.with_indifferent_access
|
|
12
|
+
VALIDATION_LOG.info "status for user #{user.id}: #{hash.inspect}"
|
|
13
|
+
valid = false unless hash[:status].eql? true
|
|
14
|
+
rescue Exception => e
|
|
15
|
+
VALIDATION_LOG.error "error check status for user #{user.id}: #{e.message}"
|
|
16
|
+
end
|
|
17
|
+
valid
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.get_customer_params(params, request)
|
|
21
|
+
if ENV["RAILS_ENV"] == 'test' || ENV['TEST'].present? || Rails.env.eql?('test')
|
|
22
|
+
{ key: 'fun_key', alias: 'imbs_domain.com', action_type: 'wap', 'status' => 'ok', country: 'az'}
|
|
23
|
+
else
|
|
24
|
+
url = SiteConfig['wap_click_addr'] + '/api/handle_customer'
|
|
25
|
+
# if Rails.env.eql? 'development'
|
|
26
|
+
# url = 'http://0.0.0.0:3000' + '/api/handle_customer'
|
|
27
|
+
# request.env['REMOTE_ADDR'] = '83.149.34.187'
|
|
28
|
+
# end
|
|
29
|
+
request_params = self.make_customer_request_params(request, params)
|
|
30
|
+
if ENV['TEST']
|
|
31
|
+
request_params[:remote_addr] = '83.149.9.19'
|
|
32
|
+
end
|
|
33
|
+
API_LOG.info "HTTP_USER_AGENT: #{request.env['HTTP_USER_AGENT']}"
|
|
34
|
+
API_LOG.info "URL TO IMBS: #{url}?#{request_params.to_query}"
|
|
35
|
+
begin
|
|
36
|
+
response = RestClient.get(url, :params => request_params)
|
|
37
|
+
API_LOG.info "RESPONSE FROM IMBS: #{response.inspect}"
|
|
38
|
+
out_hash = JSON.parse(response)
|
|
39
|
+
out_hash.with_indifferent_access
|
|
40
|
+
rescue Exception => e
|
|
41
|
+
API_LOG.error "response: #{response.inspect}"
|
|
42
|
+
{status: 'error'}
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
# end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.make_customer_request_params(request, params)
|
|
49
|
+
p = {}
|
|
50
|
+
p[:customer_key] = params[:key]
|
|
51
|
+
p[:sid] = params[:sid]
|
|
52
|
+
if p[:customer_key].blank?
|
|
53
|
+
p[:remote_addr] = request.env['REMOTE_ADDR']
|
|
54
|
+
p[:x_forwarded_for] = request.env['HTTP_X_FORWARDED_FOR']
|
|
55
|
+
end
|
|
56
|
+
p[:service_code] = SiteConfig['wc_service_code']
|
|
57
|
+
|
|
58
|
+
p = p.delete_if { |k,v| v.blank? }
|
|
59
|
+
|
|
60
|
+
concat = p[:customer_key].to_s + p[:sid].to_s + p[:remote_addr].to_s + p[:x_forwarded_for].to_s + p[:service_code].to_s + SiteConfig['wc_service_salt'].to_s
|
|
61
|
+
p[:hash] = Digest::MD5.hexdigest(concat)
|
|
62
|
+
p
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
end
|
data/lib/fly_admin/page_cache.rb
CHANGED
|
@@ -8,14 +8,18 @@ module FlyAdmin
|
|
|
8
8
|
def initialize
|
|
9
9
|
@rails_cache = ActiveSupport::Cache::MemoryStore.new
|
|
10
10
|
end
|
|
11
|
-
#
|
|
12
|
-
#
|
|
11
|
+
# Get footers like this
|
|
12
|
+
# footer_wap_ru
|
|
13
|
+
# Get pages (unsubscribe etc) like this
|
|
14
|
+
# page_mt_en
|
|
13
15
|
def read(elem)
|
|
14
16
|
text = @rails_cache.read(elem)
|
|
15
17
|
expired_in = @rails_cache.read("#{elem}_expired_an")
|
|
16
18
|
|
|
17
19
|
unless text
|
|
18
20
|
text = check_footer(elem)
|
|
21
|
+
# Write to Rails cache like
|
|
22
|
+
# elem = content_wap_ru
|
|
19
23
|
write_with_date(elem, text)
|
|
20
24
|
else
|
|
21
25
|
if Time.now > expired_in
|
|
@@ -47,7 +51,6 @@ module FlyAdmin
|
|
|
47
51
|
@rails_cache.clear
|
|
48
52
|
end
|
|
49
53
|
|
|
50
|
-
|
|
51
54
|
def check_footer(elem)
|
|
52
55
|
name, paysite, country = elem.split '_'
|
|
53
56
|
|
|
@@ -55,9 +58,29 @@ module FlyAdmin
|
|
|
55
58
|
.joins(:country, :paysite)
|
|
56
59
|
.where('fly_admin_countries.name = ? and fly_admin_paysites.name = ?', country, paysite).first
|
|
57
60
|
# get footer from db , else get it content from url like this www.bornpay.com/footer/hsSDAasd.wap.ru.html
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
FlyAdmin.api_type == 'bornpay' ? get_footer_from_bornpay(footer, name, paysite, country) : get_footer_from_imbs(footer, name, paysite, country)
|
|
62
|
+
end
|
|
63
|
+
def get_footer_from_bornpay(footer, name, paysite, country)
|
|
64
|
+
if footer && footer.local?
|
|
65
|
+
# Get from db
|
|
66
|
+
footer.send(name)
|
|
67
|
+
else
|
|
68
|
+
# Load from bornpay
|
|
69
|
+
footer_from_request = http_load(name, paysite, country)
|
|
70
|
+
# Save bornpay footer to db
|
|
71
|
+
save_footer_to_db(footer_from_request, name, paysite, country)
|
|
72
|
+
return footer_from_request
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def get_footer_from_imbs(footer, name, paysite, country)
|
|
77
|
+
if footer
|
|
78
|
+
# Get from db
|
|
79
|
+
footer.send(name)
|
|
80
|
+
else
|
|
81
|
+
# Empty footer
|
|
82
|
+
""
|
|
83
|
+
end
|
|
61
84
|
end
|
|
62
85
|
|
|
63
86
|
def http_load(name, paysite, country)
|
|
@@ -74,5 +97,28 @@ module FlyAdmin
|
|
|
74
97
|
""
|
|
75
98
|
end
|
|
76
99
|
end
|
|
100
|
+
|
|
101
|
+
def save_footer_to_db(footer_text, name, paysite, country)
|
|
102
|
+
if footer_text.present?
|
|
103
|
+
API_LOG.info "footer :#{footer_text}, name: #{name}, paysite: #{paysite}, country: #{country}"
|
|
104
|
+
country = Country.find_by_name(country)
|
|
105
|
+
paysite = Paysite.find_by_name(paysite)
|
|
106
|
+
case name
|
|
107
|
+
when 'content'
|
|
108
|
+
attributes = { 'content' => footer_text}
|
|
109
|
+
when 'unsubscription'
|
|
110
|
+
attributes = { 'unsubscription' => footer_text }
|
|
111
|
+
when 'offer'
|
|
112
|
+
attributes = { 'offer' => footer_text }
|
|
113
|
+
when 'terms'
|
|
114
|
+
attributes = { 'terms' => footer_text }
|
|
115
|
+
end
|
|
116
|
+
attributes.merge!('source_type' => FlyAdmin.api_type)
|
|
117
|
+
footer = FlyAdmin::Footer.find_or_create_by(country: country, paysite: paysite)
|
|
118
|
+
footer.assign_attributes(attributes)
|
|
119
|
+
footer.source_type = FlyAdmin.api_type
|
|
120
|
+
footer.save!
|
|
121
|
+
end
|
|
122
|
+
end
|
|
77
123
|
end
|
|
78
124
|
end
|
data/lib/fly_admin/version.rb
CHANGED
data/lib/fly_admin.rb
CHANGED
|
@@ -55,6 +55,33 @@ module FlyAdmin
|
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
+
def replace_state_machine_with_state_machines
|
|
59
|
+
gemfile_path = "#{Rails.root}/Gemfile"
|
|
60
|
+
gemfile = File.read(gemfile_path)
|
|
61
|
+
new_contents = gemfile.gsub(/gem "state_machine", :git => '.*'/, "gem 'state_machines-activerecord'")
|
|
62
|
+
new_contents.gsub!(/# using git.*295/, "")
|
|
63
|
+
File.open(gemfile_path, 'w') {|f| f.write(new_contents) }
|
|
64
|
+
ap "Running bundle install", :color => { :string => :green }
|
|
65
|
+
`bundle install`
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def replace_connection_api
|
|
69
|
+
remove_file('lib/connection_api.rb')
|
|
70
|
+
controller_path = "#{Rails.root}/app/controllers/application_controller.rb"
|
|
71
|
+
controller_contents = File.read(controller_path)
|
|
72
|
+
controller_contents.gsub!(/ ConnectionApi/, " FlyAdmin::ConnectionApi")
|
|
73
|
+
File.open(controller_path, 'w') { |f| f.write(controller_contents) }
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def replace_subscription_controller
|
|
77
|
+
remove_file('app/controllers/subscriptions_controller.rb')
|
|
78
|
+
routes_path = "#{Rails.root}/config/routes.rb"
|
|
79
|
+
routes_contents = File.read(routes_path)
|
|
80
|
+
routes_contents.gsub!(/"subscriptions#start"/,'"fly_admin/subscriptions#start"')
|
|
81
|
+
routes_contents.gsub!(/"subscriptions#splash"/, '"fly_admin/subscriptions#splash"')
|
|
82
|
+
File.open(routes_path, 'w') { |f| f.write(routes_contents) }
|
|
83
|
+
end
|
|
84
|
+
|
|
58
85
|
private
|
|
59
86
|
def engine_not_mounted?
|
|
60
87
|
File.open("#{Rails.root}/config/routes.rb").each_line do |line|
|
|
@@ -27,7 +27,13 @@ namespace :fly_admin do
|
|
|
27
27
|
desc 'Migrate existing footers'
|
|
28
28
|
task :footers => :environment do
|
|
29
29
|
Footer.all.each do |old_footer|
|
|
30
|
-
|
|
30
|
+
paysite_name = old_footer.paysite.name
|
|
31
|
+
country_name = old_footer.country.name
|
|
32
|
+
|
|
33
|
+
country_id = FlyAdmin::Country.find_by_name(country_name).id
|
|
34
|
+
paysite_id = FlyAdmin::Paysite.find_by_name(paysite_name).id
|
|
35
|
+
|
|
36
|
+
attributes = old_footer.attributes.merge({"id" => nil, "created_at" => nil, "updated_at" => nil, "source_type" => "local", "paysite_id" => paysite_id, "country_id" => country_id})
|
|
31
37
|
FlyAdmin::Footer.create!(attributes)
|
|
32
38
|
end
|
|
33
39
|
ap "Migrating is successfull!", :color => { :string => :green }
|
|
@@ -5,4 +5,4 @@ Rails.application.config.assets.version = '1.0'
|
|
|
5
5
|
|
|
6
6
|
# Precompile additional assets.
|
|
7
7
|
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
|
8
|
-
|
|
8
|
+
Rails.application.config.assets.precompile += %w( .eot .svg .ttf .woff )
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fly_admin
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ruslan Korolev
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-05-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -38,6 +38,20 @@ dependencies:
|
|
|
38
38
|
- - '>='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: mini_magick
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - '>='
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
56
|
name: sqlite3
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -90,6 +104,8 @@ files:
|
|
|
90
104
|
- MIT-LICENSE
|
|
91
105
|
- README.rdoc
|
|
92
106
|
- Rakefile
|
|
107
|
+
- app/assets/images/fly_admin/32px.png
|
|
108
|
+
- app/assets/images/fly_admin/40px.png
|
|
93
109
|
- app/assets/images/fly_admin/ajax-loader.gif
|
|
94
110
|
- app/assets/images/fly_admin/alpha.png
|
|
95
111
|
- app/assets/images/fly_admin/avatars/1.png
|
|
@@ -903,6 +919,7 @@ files:
|
|
|
903
919
|
- app/controllers/fly_admin/categories_controller.rb
|
|
904
920
|
- app/controllers/fly_admin/footers_controller.rb
|
|
905
921
|
- app/controllers/fly_admin/settings_controller.rb
|
|
922
|
+
- app/controllers/fly_admin/subscriptions_controller.rb
|
|
906
923
|
- app/controllers/fly_admin/uploads_controller.rb
|
|
907
924
|
- app/controllers/fly_admin/videos_controller.rb
|
|
908
925
|
- app/helpers/fly_admin/application_helper.rb
|
|
@@ -946,7 +963,9 @@ files:
|
|
|
946
963
|
- db/migrate/20150417075759_create_fly_admin_footers.rb
|
|
947
964
|
- db/migrate/20150417142656_create_fly_admin_paysites.rb
|
|
948
965
|
- db/migrate/20150417142744_create_fly_admin_countries.rb
|
|
966
|
+
- db/migrate/20150428102104_add_source_type_to_fly_admin_footers.rb
|
|
949
967
|
- lib/fly_admin.rb
|
|
968
|
+
- lib/fly_admin/connection_api.rb
|
|
950
969
|
- lib/fly_admin/engine.rb
|
|
951
970
|
- lib/fly_admin/page_cache.rb
|
|
952
971
|
- lib/fly_admin/railtie.rb
|