post_reorder 0.0.1

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.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +37 -0
  4. data/app/assets/javascripts/plugins/post_reorder/noty/jquery.noty.js +502 -0
  5. data/app/assets/javascripts/plugins/post_reorder/noty/layouts/topCenter.js +41 -0
  6. data/app/assets/javascripts/plugins/post_reorder/noty/layouts/topLeft.js +43 -0
  7. data/app/assets/javascripts/plugins/post_reorder/noty/layouts/topRight.js +43 -0
  8. data/app/assets/javascripts/plugins/post_reorder/noty/themes/default.js +155 -0
  9. data/app/assets/javascripts/plugins/post_reorder/post_reorder.js +69 -0
  10. data/app/assets/javascripts/plugins/post_reorder/reorder.js +5 -0
  11. data/app/assets/stylesheets/plugins/post_reorder/reorder.css +6 -0
  12. data/app/controllers/plugins/post_reorder/admin_controller.rb +35 -0
  13. data/app/controllers/plugins/post_reorder/front_controller.rb +14 -0
  14. data/app/helpers/plugins/post_reorder/main_helper.rb +22 -0
  15. data/app/helpers/plugins/post_reorder/post_reorder_helper.rb +57 -0
  16. data/app/models/plugins/post_reorder/post_reorder.rb +12 -0
  17. data/app/views/plugins/post_reorder/admin/settings.html.erb +37 -0
  18. data/app/views/plugins/post_reorder/front/index.html.erb +1 -0
  19. data/app/views/plugins/post_reorder/layouts/readme.txt +2 -0
  20. data/config/camaleon_plugin.json +30 -0
  21. data/config/locales/translation.yml +16 -0
  22. data/config/routes.rb +12 -0
  23. data/lib/post_reorder.rb +4 -0
  24. data/lib/post_reorder/engine.rb +4 -0
  25. data/lib/post_reorder/version.rb +3 -0
  26. data/lib/tasks/post_reorder_tasks.rake +4 -0
  27. data/test/dummy/README.rdoc +28 -0
  28. data/test/dummy/Rakefile +6 -0
  29. data/test/dummy/app/assets/javascripts/application.js +13 -0
  30. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  31. data/test/dummy/app/controllers/application_controller.rb +5 -0
  32. data/test/dummy/app/helpers/application_helper.rb +2 -0
  33. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  34. data/test/dummy/bin/bundle +3 -0
  35. data/test/dummy/bin/rails +4 -0
  36. data/test/dummy/bin/rake +4 -0
  37. data/test/dummy/bin/setup +29 -0
  38. data/test/dummy/config.ru +4 -0
  39. data/test/dummy/config/application.rb +26 -0
  40. data/test/dummy/config/boot.rb +5 -0
  41. data/test/dummy/config/database.yml +25 -0
  42. data/test/dummy/config/environment.rb +5 -0
  43. data/test/dummy/config/environments/development.rb +41 -0
  44. data/test/dummy/config/environments/production.rb +79 -0
  45. data/test/dummy/config/environments/test.rb +42 -0
  46. data/test/dummy/config/initializers/assets.rb +11 -0
  47. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  48. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  49. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  50. data/test/dummy/config/initializers/inflections.rb +16 -0
  51. data/test/dummy/config/initializers/mime_types.rb +4 -0
  52. data/test/dummy/config/initializers/session_store.rb +3 -0
  53. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  54. data/test/dummy/config/locales/en.yml +23 -0
  55. data/test/dummy/config/routes.rb +56 -0
  56. data/test/dummy/config/secrets.yml +22 -0
  57. data/test/dummy/public/404.html +67 -0
  58. data/test/dummy/public/422.html +67 -0
  59. data/test/dummy/public/500.html +66 -0
  60. data/test/dummy/public/favicon.ico +0 -0
  61. data/test/integration/navigation_test.rb +8 -0
  62. data/test/post_reorder_test.rb +7 -0
  63. data/test/test_helper.rb +20 -0
  64. metadata +171 -0
@@ -0,0 +1,41 @@
1
+ (function($) {
2
+
3
+ $.noty.layouts.topCenter = {
4
+ name : 'topCenter',
5
+ options : { // overrides options
6
+
7
+ },
8
+ container: {
9
+ object : '<ul id="noty_topCenter_layout_container" />',
10
+ selector: 'ul#noty_topCenter_layout_container',
11
+ style : function() {
12
+ $(this).css({
13
+ top : 20,
14
+ left : 0,
15
+ position : 'fixed',
16
+ width : '310px',
17
+ height : 'auto',
18
+ margin : 0,
19
+ padding : 0,
20
+ listStyleType: 'none',
21
+ zIndex : 10000000
22
+ });
23
+
24
+ $(this).css({
25
+ left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px'
26
+ });
27
+ }
28
+ },
29
+ parent : {
30
+ object : '<li />',
31
+ selector: 'li',
32
+ css : {}
33
+ },
34
+ css : {
35
+ display: 'none',
36
+ width : '310px'
37
+ },
38
+ addClass : ''
39
+ };
40
+
41
+ })(jQuery);
@@ -0,0 +1,43 @@
1
+ (function($) {
2
+
3
+ $.noty.layouts.topLeft = {
4
+ name : 'topLeft',
5
+ options : { // overrides options
6
+
7
+ },
8
+ container: {
9
+ object : '<ul id="noty_topLeft_layout_container" />',
10
+ selector: 'ul#noty_topLeft_layout_container',
11
+ style : function() {
12
+ $(this).css({
13
+ top : 20,
14
+ left : 20,
15
+ position : 'fixed',
16
+ width : '310px',
17
+ height : 'auto',
18
+ margin : 0,
19
+ padding : 0,
20
+ listStyleType: 'none',
21
+ zIndex : 10000000
22
+ });
23
+
24
+ if(window.innerWidth < 600) {
25
+ $(this).css({
26
+ left: 5
27
+ });
28
+ }
29
+ }
30
+ },
31
+ parent : {
32
+ object : '<li />',
33
+ selector: 'li',
34
+ css : {}
35
+ },
36
+ css : {
37
+ display: 'none',
38
+ width : '310px'
39
+ },
40
+ addClass : ''
41
+ };
42
+
43
+ })(jQuery);
@@ -0,0 +1,43 @@
1
+ (function($) {
2
+
3
+ $.noty.layouts.topRight = {
4
+ name : 'topRight',
5
+ options : { // overrides options
6
+
7
+ },
8
+ container: {
9
+ object : '<ul id="noty_topRight_layout_container" />',
10
+ selector: 'ul#noty_topRight_layout_container',
11
+ style : function() {
12
+ $(this).css({
13
+ top : 20,
14
+ right : 20,
15
+ position : 'fixed',
16
+ width : '310px',
17
+ height : 'auto',
18
+ margin : 0,
19
+ padding : 0,
20
+ listStyleType: 'none',
21
+ zIndex : 10000000
22
+ });
23
+
24
+ if(window.innerWidth < 600) {
25
+ $(this).css({
26
+ right: 5
27
+ });
28
+ }
29
+ }
30
+ },
31
+ parent : {
32
+ object : '<li />',
33
+ selector: 'li',
34
+ css : {}
35
+ },
36
+ css : {
37
+ display: 'none',
38
+ width : '310px'
39
+ },
40
+ addClass : ''
41
+ };
42
+
43
+ })(jQuery);
@@ -0,0 +1,155 @@
1
+ ;(function($) {
2
+
3
+ $.noty.themes.defaultTheme = {
4
+ name: 'defaultTheme',
5
+ helpers: {
6
+ borderFix: function() {
7
+ if (this.options.dismissQueue) {
8
+ var selector = this.options.layout.container.selector + ' ' + this.options.layout.parent.selector;
9
+ switch (this.options.layout.name) {
10
+ case 'top':
11
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
12
+ $(selector).last().css({borderRadius: '0px 0px 3px 3px'}); break;
13
+ case 'topCenter': case 'topLeft': case 'topRight':
14
+ case 'bottomCenter': case 'bottomLeft': case 'bottomRight':
15
+ case 'center': case 'centerLeft': case 'centerRight': case 'inline':
16
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
17
+ $(selector).first().css({'border-top-left-radius': '3px', 'border-top-right-radius': '3px'});
18
+ $(selector).last().css({'border-bottom-left-radius': '3px', 'border-bottom-right-radius': '3px'}); break;
19
+ case 'bottom':
20
+ $(selector).css({borderRadius: '0px 0px 0px 0px'});
21
+ $(selector).first().css({borderRadius: '3px 3px 0px 0px'}); break;
22
+ default: break;
23
+ }
24
+ }
25
+ }
26
+ },
27
+ modal: {
28
+ css: {
29
+ position: 'fixed',
30
+ width: '100%',
31
+ height: '100%',
32
+ backgroundColor: '#000',
33
+ zIndex: 10000,
34
+ opacity: 0.6,
35
+ display: 'none',
36
+ left: 0,
37
+ top: 0
38
+ }
39
+ },
40
+ style: function() {
41
+
42
+ this.$bar.css({
43
+ overflow: 'hidden',
44
+ background: "#000000"
45
+ });
46
+
47
+ this.$message.css({
48
+ fontSize: '11px',
49
+ lineHeight: '14px',
50
+ textAlign: 'center',
51
+ padding: '8px 10px 9px',
52
+ width: 'auto',
53
+ position: 'relative'
54
+ });
55
+
56
+ this.$closeButton.css({
57
+ position: 'absolute',
58
+ top: 4, right: 4,
59
+ width: 10, height: 10,
60
+ background: "url(data:image/png;base64,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)",
61
+ display: 'none',
62
+ cursor: 'pointer'
63
+ });
64
+
65
+ this.$buttons.css({
66
+ padding: 5,
67
+ textAlign: 'right',
68
+ borderTop: '0px',
69
+ backgroundColor: '#333333'
70
+ });
71
+
72
+ this.$buttons.find('button').css({
73
+ marginLeft: 5
74
+ });
75
+
76
+ this.$buttons.find('button:first').css({
77
+ marginLeft: 0
78
+ });
79
+
80
+ this.$bar.bind({
81
+ mouseenter: function() { $(this).find('.noty_close').stop().fadeTo('normal',1); },
82
+ mouseleave: function() { $(this).find('.noty_close').stop().fadeTo('normal',0); }
83
+ });
84
+
85
+ switch (this.options.layout.name) {
86
+ case 'top':
87
+ this.$bar.css({
88
+ borderRadius: '0px 0px 3px 3px',
89
+ borderBottom: '2px solid #eee',
90
+ borderLeft: '2px solid #eee',
91
+ borderRight: '2px solid #eee',
92
+ boxShadow: "0 1px 2px rgba(0, 0, 0, 0.2)"
93
+ });
94
+ break;
95
+ case 'topCenter': case 'center': case 'bottomCenter': case 'inline':
96
+ this.$bar.css({
97
+ borderRadius: '3px',
98
+ border: '1px solid #eee',
99
+ boxShadow: "0 1px 2px rgba(0, 0, 0, 0.2)"
100
+ });
101
+ this.$message.css({fontSize: '11px', textAlign: 'center'});
102
+ break;
103
+ case 'topLeft': case 'topRight':
104
+ case 'bottomLeft': case 'bottomRight':
105
+ case 'centerLeft': case 'centerRight':
106
+ this.$bar.css({
107
+ borderRadius: '3px',
108
+ border: '1px solid #eee',
109
+ boxShadow: "0 1px 2px rgba(0, 0, 0, 0.2)"
110
+ });
111
+ this.$message.css({fontSize: '11px', textAlign: 'left'});
112
+ break;
113
+ case 'bottom':
114
+ this.$bar.css({
115
+ borderRadius: '3px 3px 0px 0px',
116
+ borderTop: '2px solid #eee',
117
+ borderLeft: '2px solid #eee',
118
+ borderRight: '2px solid #eee',
119
+ boxShadow: "0 -1px 2px rgba(0, 0, 0, 0.2)"
120
+ });
121
+ break;
122
+ default:
123
+ this.$bar.css({
124
+ border: '2px solid #eee',
125
+ boxShadow: "0 1px 2px rgba(0, 0, 0, 0.2)"
126
+ });
127
+ break;
128
+ }
129
+
130
+ switch (this.options.type) {
131
+ case 'alert': case 'notification':
132
+ this.$bar.css({backgroundColor: '#333', borderColor: '#333', color: '#FFF', opacity: 1}); break;
133
+ case 'warning':
134
+ this.$bar.css({backgroundColor: '#FEA223', borderColor: '#FEA223', color: '#FFF', opacity: 1});
135
+ this.$buttons.css({borderTop: '1px solid #FEA223'}); break;
136
+ case 'error':
137
+ this.$bar.css({backgroundColor: '#B64645', borderColor: '#B64645', color: '#FFF', opacity: 1});
138
+ this.$buttons.css({borderTop: '1px solid #B64645'}); break;
139
+ case 'information':
140
+ this.$bar.css({backgroundColor: '#3FBAE4', borderColor: '#3FBAE4', color: '#FFF', opacity: 1});
141
+ this.$buttons.css({borderTop: '1px solid #3FBAE4'}); break;
142
+ case 'success':
143
+ this.$bar.css({backgroundColor: '#95B75D', borderColor: '#95B75D', color: '#FFF', opacity: 1});
144
+ this.$buttons.css({borderTop: '1px solid #95B75D'});break;
145
+ default:
146
+ this.$bar.css({backgroundColor: '#333', borderColor: '#333', color: '#FFF', opacity: 1}); break;
147
+ }
148
+ },
149
+ callback: {
150
+ onShow: function() { $.noty.themes.defaultTheme.helpers.borderFix.apply(this); },
151
+ onClose: function() { $.noty.themes.defaultTheme.helpers.borderFix.apply(this); }
152
+ }
153
+ };
154
+
155
+ })(jQuery);
@@ -0,0 +1,69 @@
1
+ (function($){
2
+ $.fn.reorder = function (options){
3
+ var default_options = {url: "", table: ".table"};
4
+ options = $.extend(default_options, options || {});
5
+
6
+ var th_data = false;
7
+
8
+ $(options.table+' thead tr').each(function(i, el) {
9
+
10
+ th = $(this).find('th').attr('data-sortable');
11
+
12
+ if(typeof th === "undefined"){
13
+ th_data = true
14
+ }else{
15
+ th_data = false
16
+ }
17
+
18
+ });
19
+
20
+ if(th_data){
21
+ th_new = '<th class="center" data-sortable="0"></th>';
22
+ $(options.table+' thead tr').prepend(th_new);
23
+
24
+ $(options.table+' tbody tr').each(function(i, el) {
25
+ id = $(this).attr('data-id');
26
+
27
+ td_new = '<td>'
28
+ +'<div class="moved" style="cursor: all-scroll">'
29
+ +'<i class="fa fa-arrows"></i>'
30
+ +'<input type="hidden" name="values[]" value="'+id+'" />'
31
+ +'</div>'
32
+ '</td>';
33
+
34
+ $(this).prepend(td_new);
35
+
36
+ });
37
+ }
38
+
39
+
40
+ $( options.table+" tbody" ).sortable({
41
+ axis: "y",
42
+ placeholder: "ui-state-highlight",
43
+ handle: ".moved",
44
+ //items: "tr:not(.sortable)",
45
+ items: "tr.sortable",
46
+ start: function(event, ui) {
47
+ ui.item.startPos = ui.item.index();
48
+
49
+ },
50
+ stop: function( event, ui ) {
51
+ $.post(options.url, $(options.table+" input" ).serialize(), function(){
52
+ if(ui.item.startPos != ui.item.index()){
53
+ var $not = noty({text: 'Sorted successfully!', layout: 'topRight', type: 'success'});
54
+ setTimeout(function(){
55
+ $not.close();
56
+ },2000);
57
+ }
58
+ });
59
+ },
60
+ change: function(event, ui) {
61
+ console.log("New position: " + ui.placeholder.index());
62
+
63
+ }
64
+ });
65
+
66
+ $( options.table+" tbody" ).disableSelection();
67
+ };
68
+
69
+ })(jQuery);
@@ -0,0 +1,5 @@
1
+ //= require ./post_reorder
2
+
3
+ //= require ./noty/jquery.noty
4
+ //= require ./noty/layouts/topRight
5
+ //= require ./noty/themes/default
@@ -0,0 +1,6 @@
1
+ .ui-state-highlight { height: 1.5em; line-height: 1.2em; }
2
+
3
+ .ui-sortable-helper{
4
+ width: 100%;
5
+ background: #e5e5e5;
6
+ }
@@ -0,0 +1,35 @@
1
+ =begin
2
+ Camaleon CMS is a content management system
3
+ Copyright (C) 2015 by Owen Peredo Diaz
4
+ Email: owenperedo@gmail.com
5
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
6
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7
+ See the GNU Affero General Public License (GPLv3) for more details.
8
+ =end
9
+ class Plugins::PostReorder::AdminController < Apps::PluginsAdminController
10
+
11
+ # This updates the position of the elements in the database.
12
+ def reorder_posts
13
+ if params[:values].present?
14
+ params[:values].each_with_index do |value,index |
15
+ post = current_site.posts.find(value)
16
+ post.update_column("post_order", index)
17
+ end
18
+ end
19
+ render inline: "correct"
20
+ end
21
+
22
+ # show plugin settings.
23
+ def settings
24
+
25
+ end
26
+
27
+ # This saves the settings plugin.
28
+ def save_settings
29
+ @plugin = current_site.plugins.find_by_slug("post_reorder")
30
+ @plugin.set_meta("_reorder_objects", params[:object] || {})
31
+ flash[:notice] = "#{t('plugin.post_reorder.updated_changes')}"
32
+
33
+ redirect_to admin_plugins_path
34
+ end
35
+ end
@@ -0,0 +1,14 @@
1
+ =begin
2
+ Camaleon CMS is a content management system
3
+ Copyright (C) 2015 by Owen Peredo Diaz
4
+ Email: owenperedo@gmail.com
5
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
6
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7
+ See the GNU Affero General Public License (GPLv3) for more details.
8
+ =end
9
+ class Plugins::PostReorder::FrontController < Apps::PluginsFrontController
10
+
11
+ def index
12
+
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ module Plugins::PostReorder::MainHelper
2
+ def self.included(klass)
3
+ # klass.helper_method [:my_helper_method] rescue "" # here your methods accessible from views
4
+ end
5
+
6
+ # here all actions on going to active
7
+ # you can run sql commands like this:
8
+ # results = ActiveRecord::Base.connection.execute(query);
9
+ # plugin: plugin model
10
+ def post_reorder_on_active(plugin)
11
+ end
12
+
13
+ # here all actions on going to inactive
14
+ # plugin: plugin model
15
+ def post_reorder_on_inactive(plugin)
16
+ end
17
+
18
+ # here all actions to upgrade for a new version
19
+ # plugin: plugin model
20
+ def post_reorder_on_upgrade(plugin)
21
+ end
22
+ end