para 0.4.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.
Files changed (203) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +65 -0
  4. data/Rakefile +21 -0
  5. data/app/assets/images/para/admin/bg.png +0 -0
  6. data/app/assets/javascripts/admin/app.coffee +1 -0
  7. data/app/assets/javascripts/para/admin/table.coffee +46 -0
  8. data/app/assets/javascripts/para/admin/theme_actions.coffee +26 -0
  9. data/app/assets/javascripts/para/admin/tree.coffee +53 -0
  10. data/app/assets/javascripts/para/admin.coffee +18 -0
  11. data/app/assets/javascripts/para/application.js +13 -0
  12. data/app/assets/javascripts/para/inputs/nested_many.coffee +57 -0
  13. data/app/assets/javascripts/para/lib/ajax.coffee +11 -0
  14. data/app/assets/stylesheets/admin/app.sass +0 -0
  15. data/app/assets/stylesheets/admin/theme.sass +0 -0
  16. data/app/assets/stylesheets/para/admin/theme/_base.sass +170 -0
  17. data/app/assets/stylesheets/para/admin/theme/_breadcrumb.sass +29 -0
  18. data/app/assets/stylesheets/para/admin/theme/_buttons.sass +24 -0
  19. data/app/assets/stylesheets/para/admin/theme/_checkable.sass +107 -0
  20. data/app/assets/stylesheets/para/admin/theme/_commonds.sass +213 -0
  21. data/app/assets/stylesheets/para/admin/theme/_dropdown.sass +53 -0
  22. data/app/assets/stylesheets/para/admin/theme/_form.sass +141 -0
  23. data/app/assets/stylesheets/para/admin/theme/_list.sass +138 -0
  24. data/app/assets/stylesheets/para/admin/theme/_navigation.sass +287 -0
  25. data/app/assets/stylesheets/para/admin/theme/_navtabs.sass +127 -0
  26. data/app/assets/stylesheets/para/admin/theme/_orderable.sass +44 -0
  27. data/app/assets/stylesheets/para/admin/theme/_panel.sass +288 -0
  28. data/app/assets/stylesheets/para/admin/theme/_responsive.sass +123 -0
  29. data/app/assets/stylesheets/para/admin/theme/_sorting.sass +30 -0
  30. data/app/assets/stylesheets/para/admin/theme/_table.sass +24 -0
  31. data/app/assets/stylesheets/para/admin/theme/_tree.sass +74 -0
  32. data/app/assets/stylesheets/para/admin/theme/_variables.sass +31 -0
  33. data/app/assets/stylesheets/para/admin/theme.sass +22 -0
  34. data/app/assets/stylesheets/para/admin.sass +10 -0
  35. data/app/assets/stylesheets/para/application.css +15 -0
  36. data/app/assets/stylesheets/para/lib/_variables.scss +646 -0
  37. data/app/assets/stylesheets/para/overrides/datetimepicker.sass +17 -0
  38. data/app/assets/stylesheets/para/overrides/fuelux.sass +43 -0
  39. data/app/assets/stylesheets/para/overrides/jasny.bootstrap.sass +41 -0
  40. data/app/assets/stylesheets/para/overrides/redactor.sass +88 -0
  41. data/app/assets/stylesheets/para/overrides/responsive.sass +63 -0
  42. data/app/assets/stylesheets/para/overrides/selectize.sass +45 -0
  43. data/app/assets/stylesheets/para/overrides/slider.sass +13 -0
  44. data/app/assets/stylesheets/para/overrides/theme.sass +172 -0
  45. data/app/controllers/concerns/para/admin/resource_controller_concerns.rb +17 -0
  46. data/app/controllers/para/admin/base_controller.rb +46 -0
  47. data/app/controllers/para/admin/component_controller.rb +9 -0
  48. data/app/controllers/para/admin/crud_component_controller.rb +17 -0
  49. data/app/controllers/para/admin/crud_resources_controller.rb +71 -0
  50. data/app/controllers/para/admin/main_controller.rb +8 -0
  51. data/app/controllers/para/admin/resources_controller.rb +163 -0
  52. data/app/controllers/para/admin/settings_component_controller.rb +11 -0
  53. data/app/controllers/para/admin/settings_form_controller.rb +21 -0
  54. data/app/controllers/para/admin/singleton_resource_component_controller.rb +14 -0
  55. data/app/controllers/para/admin/singleton_resources_controller.rb +30 -0
  56. data/app/controllers/para/application_controller.rb +7 -0
  57. data/app/decorators/para/component/base_decorator.rb +48 -0
  58. data/app/decorators/para/component/crud_decorator.rb +32 -0
  59. data/app/decorators/para/component/settings_decorator.rb +11 -0
  60. data/app/decorators/para/component/singleton_resource_decorator.rb +11 -0
  61. data/app/decorators/para/component_section_decorator.rb +4 -0
  62. data/app/helpers/para/admin/base_helper.rb +57 -0
  63. data/app/helpers/para/admin/component_groups_helper.rb +4 -0
  64. data/app/helpers/para/admin/components_helper.rb +4 -0
  65. data/app/helpers/para/admin/resources_helper.rb +27 -0
  66. data/app/helpers/para/application_helper.rb +14 -0
  67. data/app/helpers/para/exports_helper.rb +11 -0
  68. data/app/helpers/para/flash_helper.rb +48 -0
  69. data/app/helpers/para/form_helper.rb +28 -0
  70. data/app/helpers/para/markup_helper.rb +15 -0
  71. data/app/helpers/para/model_helper.rb +38 -0
  72. data/app/helpers/para/navigation_helper.rb +8 -0
  73. data/app/helpers/para/ordering_helper.rb +20 -0
  74. data/app/helpers/para/search_helper.rb +22 -0
  75. data/app/helpers/para/tag_helper.rb +50 -0
  76. data/app/helpers/para/tree_helper.rb +41 -0
  77. data/app/models/para/component/base.rb +70 -0
  78. data/app/models/para/component/crud.rb +45 -0
  79. data/app/models/para/component/resource.rb +33 -0
  80. data/app/models/para/component/settings.rb +17 -0
  81. data/app/models/para/component/singleton_resource.rb +25 -0
  82. data/app/models/para/component_resource.rb +6 -0
  83. data/app/models/para/component_section.rb +18 -0
  84. data/app/views/layouts/para/admin.html.haml +32 -0
  85. data/app/views/layouts/para/application.html.erb +14 -0
  86. data/app/views/para/admin/component_sections/_form.html.haml +10 -0
  87. data/app/views/para/admin/component_sections/edit.html.haml +5 -0
  88. data/app/views/para/admin/component_sections/new.html.haml +5 -0
  89. data/app/views/para/admin/components/_form.html.haml +15 -0
  90. data/app/views/para/admin/components/new.html.haml +4 -0
  91. data/app/views/para/admin/crud_component/show.html.haml +4 -0
  92. data/app/views/para/admin/dashboard.html.haml +10 -0
  93. data/app/views/para/admin/main/index.html.haml +1 -0
  94. data/app/views/para/admin/resources/_exports_menu.html.haml +12 -0
  95. data/app/views/para/admin/resources/_fields.html.haml +5 -0
  96. data/app/views/para/admin/resources/_filters.html.haml +9 -0
  97. data/app/views/para/admin/resources/_form.html.haml +6 -0
  98. data/app/views/para/admin/resources/_list.html.haml +22 -0
  99. data/app/views/para/admin/resources/_table.html.haml +8 -0
  100. data/app/views/para/admin/resources/_tree.html.haml +15 -0
  101. data/app/views/para/admin/resources/_tree_item.html.haml +16 -0
  102. data/app/views/para/admin/resources/edit.html.haml +6 -0
  103. data/app/views/para/admin/resources/new.html.haml +6 -0
  104. data/app/views/para/admin/settings_component/show.html.haml +12 -0
  105. data/app/views/para/admin/shared/_breadcrumb.html.haml +3 -0
  106. data/app/views/para/admin/shared/_header.html.haml +27 -0
  107. data/app/views/para/admin/shared/_navigation.html.haml +21 -0
  108. data/app/views/para/admin/singleton_resource_component/show.html.haml +5 -0
  109. data/app/views/para/inputs/_nested_many.html.haml +10 -0
  110. data/app/views/para/inputs/_nested_many_container.html.haml +19 -0
  111. data/app/views/para/inputs/_nested_one.html.haml +3 -0
  112. data/config/locales/en.yml +86 -0
  113. data/config/locales/fr.yml +101 -0
  114. data/db/migrate/20140911091225_create_para_components.rb +19 -0
  115. data/db/migrate/20140911112150_add_slug_to_para_components.rb +6 -0
  116. data/db/migrate/20140929125733_create_para_component_sections.rb +8 -0
  117. data/db/migrate/20140929131111_add_identifier_to_para_component_sections.rb +5 -0
  118. data/db/migrate/20140930121822_add_position_to_para_component_section.rb +5 -0
  119. data/db/migrate/20150129170710_create_para_component_resources.rb +13 -0
  120. data/db/migrate/20150203173219_add_identifier_to_para_components.rb +5 -0
  121. data/lib/generators/para/admin_user/admin_user_generator.rb +16 -0
  122. data/lib/generators/para/component/component_generator.rb +59 -0
  123. data/lib/generators/para/component/templates/component.rb +3 -0
  124. data/lib/generators/para/component/templates/component_controller.rb +7 -0
  125. data/lib/generators/para/component/templates/show.html.haml +2 -0
  126. data/lib/generators/para/exporter/exporter_generator.rb +42 -0
  127. data/lib/generators/para/exporter/templates/base_exporter.rb +15 -0
  128. data/lib/generators/para/exporter/templates/csv_exporter.rb +13 -0
  129. data/lib/generators/para/form/form_generator.rb +15 -0
  130. data/lib/generators/para/form/templates/_form.html.haml +7 -0
  131. data/lib/generators/para/install/install_generator.rb +112 -0
  132. data/lib/generators/para/install/templates/components.rb +13 -0
  133. data/lib/generators/para/install/templates/initializer.rb +23 -0
  134. data/lib/generators/para/nested_fields/nested_fields_generator.rb +15 -0
  135. data/lib/generators/para/nested_fields/templates/_nested_fields.html.haml +3 -0
  136. data/lib/generators/para/orderable/orderable_generator.rb +53 -0
  137. data/lib/generators/para/orderable/templates/orderable_migration.rb +6 -0
  138. data/lib/generators/para/resource/resource_generator.rb +71 -0
  139. data/lib/generators/para/resource/templates/resource_controller.rb +5 -0
  140. data/lib/generators/para/table/table_generator.rb +34 -0
  141. data/lib/generators/para/table/templates/_table.html.haml +10 -0
  142. data/lib/para/attribute_field/base.rb +77 -0
  143. data/lib/para/attribute_field/belongs_to.rb +29 -0
  144. data/lib/para/attribute_field/boolean.rb +15 -0
  145. data/lib/para/attribute_field/datetime.rb +9 -0
  146. data/lib/para/attribute_field/file.rb +20 -0
  147. data/lib/para/attribute_field/has_many.rb +31 -0
  148. data/lib/para/attribute_field/image.rb +25 -0
  149. data/lib/para/attribute_field/nested_many.rb +26 -0
  150. data/lib/para/attribute_field/nested_one.rb +27 -0
  151. data/lib/para/attribute_field/password.rb +18 -0
  152. data/lib/para/attribute_field/redactor.rb +20 -0
  153. data/lib/para/attribute_field/relation.rb +52 -0
  154. data/lib/para/attribute_field/translation.rb +9 -0
  155. data/lib/para/attribute_field_mappings.rb +82 -0
  156. data/lib/para/cloneable.rb +20 -0
  157. data/lib/para/component/exportable.rb +25 -0
  158. data/lib/para/component.rb +27 -0
  159. data/lib/para/components_configuration.rb +156 -0
  160. data/lib/para/config.rb +21 -0
  161. data/lib/para/engine.rb +59 -0
  162. data/lib/para/errors.rb +15 -0
  163. data/lib/para/exporter/base.rb +27 -0
  164. data/lib/para/exporter/csv.rb +49 -0
  165. data/lib/para/exporter.rb +57 -0
  166. data/lib/para/ext/cancan.rb +26 -0
  167. data/lib/para/ext/paperclip.rb +67 -0
  168. data/lib/para/ext.rb +13 -0
  169. data/lib/para/form_builder/containers.rb +70 -0
  170. data/lib/para/form_builder/field_mappings.rb +9 -0
  171. data/lib/para/form_builder/nested_form.rb +80 -0
  172. data/lib/para/form_builder/ordering.rb +15 -0
  173. data/lib/para/form_builder/settings.rb +24 -0
  174. data/lib/para/form_builder.rb +22 -0
  175. data/lib/para/generators/field_helpers.rb +32 -0
  176. data/lib/para/generators/name_helpers.rb +9 -0
  177. data/lib/para/generators/named_base.rb +7 -0
  178. data/lib/para/generators.rb +11 -0
  179. data/lib/para/inputs/nested_many_input.rb +40 -0
  180. data/lib/para/inputs/nested_one_input.rb +24 -0
  181. data/lib/para/inputs.rb +11 -0
  182. data/lib/para/markup/alert.rb +37 -0
  183. data/lib/para/markup/component.rb +20 -0
  184. data/lib/para/markup/modal.rb +52 -0
  185. data/lib/para/markup/panel.rb +41 -0
  186. data/lib/para/markup/resources_table.rb +178 -0
  187. data/lib/para/markup.rb +10 -0
  188. data/lib/para/model_field_parsers/base.rb +20 -0
  189. data/lib/para/model_field_parsers/devise.rb +37 -0
  190. data/lib/para/model_field_parsers/globalize.rb +23 -0
  191. data/lib/para/model_field_parsers/orderable.rb +15 -0
  192. data/lib/para/model_field_parsers/paperclip.rb +51 -0
  193. data/lib/para/model_field_parsers/redactor.rb +19 -0
  194. data/lib/para/model_field_parsers/relations.rb +67 -0
  195. data/lib/para/model_field_parsers.rb +22 -0
  196. data/lib/para/orderable.rb +44 -0
  197. data/lib/para/routes.rb +49 -0
  198. data/lib/para/version.rb +3 -0
  199. data/lib/para.rb +65 -0
  200. data/lib/rails/relation_length_validator.rb +45 -0
  201. data/lib/rails/routing_mapper.rb +27 -0
  202. data/lib/tasks/para_tasks.rake +22 -0
  203. metadata +595 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bf91ced8ed0c3b19a7c6969a2b528ccc35ae1a3e
4
+ data.tar.gz: 0368b7ddfaeff31415371ebe2cc9c7f23cbeef63
5
+ SHA512:
6
+ metadata.gz: 1d0717d4cc7da391e4fadba4fbda2720d6f7ccedaf208fd65f307275bc5f08897af5be6e10694200158de3e4daf58b2ad0739c31530015f4fe1909a2e7439c97
7
+ data.tar.gz: b7c643c8c1d81d08f8c8eeb3129396eda89e39591363a9a8eddb6a8737abee4c06401557a94167c47f5a849328f703d9f7fc008a6a1c54e5514a7ee34fade9a7
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2014 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # Para Ain't Rails Admin
2
+
3
+ Admin / CMS Framework for rails. WIP
4
+
5
+ Detailed documentation (in progress too) can be found at [in the Wiki](https://github.com/para-cms/para/wiki) section.
6
+
7
+ ## Installation
8
+
9
+ First, add the following line to the Gemfile
10
+
11
+ ```ruby
12
+ gem 'para', github: 'para-cms/para'
13
+ ```
14
+
15
+ Then :
16
+
17
+ ```bash
18
+ bundle install
19
+ ```
20
+
21
+ And run the install generator :
22
+
23
+ ```bash
24
+ rails g para:install
25
+ ```
26
+
27
+ For detailed instructions, please refer to the wiki
28
+ [Installation](https://github.com/para-cms/para/wiki/Installation) section.
29
+
30
+ ## Usage
31
+
32
+ The Para documentation can be found in the [Wiki]()
33
+
34
+ Here's a summary of what you can find :
35
+
36
+ ### Getting started
37
+
38
+ * [Installation](https://github.com/para-cms/para/wiki/Installation)
39
+ * [Getting Started](https://github.com/para-cms/para/wiki/Getting-started)
40
+
41
+ ### Components
42
+
43
+ * [Creating components](https://github.com/para-cms/para/wiki/Creating-components)
44
+ * [Components configuration](https://github.com/para-cms/para/wiki/Components-configuration)
45
+ * [Accessing components](https://github.com/para-cms/para/wiki/Accessing-components-in-the-frontend)
46
+
47
+ ### Customization
48
+
49
+ * [Customizing tables](https://github.com/para-cms/para/wiki/Customizing-tables)
50
+ * [Customizing forms](https://github.com/para-cms/para/wiki/Customizing-Forms)
51
+ * [Nested forms](https://github.com/para-cms/para/wiki/Nested-forms)
52
+ * [Adding custom Javascript](https://github.com/para-cms/para/wiki/Adding-JS)
53
+
54
+ ### Misc features
55
+
56
+ * [Ordering models](https://github.com/para-cms/para/wiki/Ordering-models)
57
+ * [Use models with `acts_as_tree`](https://github.com/para-cms/para/wiki/Use-models-with-%60acts_as_tree%60)
58
+ * [Global app settings](https://github.com/para-cms/para/wiki/Global-app-settings)
59
+ * [Adding exports](https://github.com/para-cms/para/wiki/Exporting-data-from-your-models)
60
+ * [Admin customization](https://github.com/para-cms/para/wiki/Admin-customization)
61
+
62
+
63
+ ## Licence
64
+
65
+ Para is released under the MIT-Licence.
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Para'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+ Bundler::GemHelper.install_tasks
21
+
Binary file
@@ -0,0 +1 @@
1
+ # Override in app
@@ -0,0 +1,46 @@
1
+ class Para.ResourceTable
2
+ constructor: (@$table) ->
3
+ @$tbody = @$table.find('tbody')
4
+ @initializeOrderable()
5
+
6
+ initializeOrderable: ->
7
+ @orderable = @$table.hasClass('orderable')
8
+
9
+ return unless @orderable
10
+
11
+ @orderUrl = @$table.data('order-url')
12
+
13
+ @$tbody.sortable
14
+ handle: '.order-anchor'
15
+ forcePlaceholderSize: true
16
+ items: 'tr'
17
+ placeholder: "<tr><td colspan=\"100%\" class=\"sortable-placeholder\"></td></tr>"
18
+
19
+ @$tbody.on('sortupdate', $.proxy(@sortUpdate, this))
20
+
21
+ sortUpdate: ->
22
+ @$tbody.find('tr').each (i, el) ->
23
+ $(el).find('.resource-position-field').val(i)
24
+
25
+ @updateOrder()
26
+
27
+ updateOrder: ->
28
+ Para.ajax(
29
+ url: @orderUrl
30
+ method: 'patch'
31
+ data:
32
+ resources: @buildOrderedData()
33
+ success: $.proxy(@orderUpdated, this)
34
+ )
35
+
36
+ buildOrderedData: ->
37
+ for i, field of @$tbody.find('.resource-position-field').get()
38
+ $field = $(field)
39
+ { id: $field.closest('.order-anchor').data('id'), position: $field.val() }
40
+
41
+ orderUpdated: ->
42
+ # TODO: Add flash message to display ordering success
43
+
44
+ $(document).on 'page:change', ->
45
+ $('.para-component-relation-table').each (i, el) ->
46
+ new Para.ResourceTable($(el))
@@ -0,0 +1,26 @@
1
+ scrollToComponentSection = ($component, duration = 0) ->
2
+ sectionOffset = $component.closest('.component-section-item').offset().top + $('.page-sidebar').scrollTop()
3
+ headerHeight = $('.page-sidebar .brand-logo').outerHeight()
4
+ $('.page-sidebar').scrollTo(sectionOffset - headerHeight, duration: duration)
5
+
6
+ responsive_sidebar_navigation = ->
7
+ # Scroll to active element's section on page change
8
+ if ($activeItem = $('.component-item.active')).length
9
+ scrollToComponentSection($activeItem)
10
+
11
+ $('.component-item').on 'click', 'a', (e) ->
12
+ console.log 'scroll to ', $(e.currentTarget).closest('.component-item')
13
+ scrollToComponentSection($(e.currentTarget), 150)
14
+
15
+ $(document).on 'page:change', ->
16
+ responsive_sidebar_navigation()
17
+
18
+ $(".selectize-tags").selectize
19
+ delimiter: ","
20
+ persist: false
21
+ create: (input) ->
22
+ value: input
23
+ text: input
24
+
25
+ $(window).resize ->
26
+ responsive_sidebar_navigation()
@@ -0,0 +1,53 @@
1
+ class Para.ResourceTree
2
+ constructor: (@$el) ->
3
+ @initializeTree()
4
+
5
+ initializeTree: ->
6
+ @orderUrl = @$el.data('url')
7
+ @maxDepth = parseInt @$el.data('max-depth')
8
+
9
+ $(".tree")
10
+ .sortable
11
+ handle: ".handle"
12
+ items: ".node"
13
+ connectWith: ".tree"
14
+ .on('sortupdate', $.proxy(@sortUpdate, this))
15
+
16
+ sortUpdate: (e, data) ->
17
+ @handlePlaceholder($el) for $el in [data.endparent, data.startparent, data.item.find('.tree')]
18
+ @updateOrder()
19
+
20
+ handlePlaceholder: ($el) ->
21
+ $placeholder = $el.find("> .placeholder")
22
+ if $el.parents('.tree').length - 1 >= @maxDepth or $el.find('> .node').length
23
+ $placeholder.hide()
24
+ $el.children("> .tree").each (index, el) => @handlePlaceholder $(el)
25
+ else
26
+ $placeholder.show()
27
+
28
+ updateOrder: ->
29
+ Para.ajax(
30
+ url: @orderUrl
31
+ method: 'patch'
32
+ data:
33
+ resources: @buildOrderedData()
34
+ success: $.proxy(@orderUpdated, this)
35
+ )
36
+
37
+ buildOrderedData: ->
38
+ data = {}
39
+ $(".node").each (index) ->
40
+ $this = $(this)
41
+ data[index] = {
42
+ id: $this.data("id"),
43
+ position: index,
44
+ parent_id: $this.parent().parent().data("id")
45
+ }
46
+ data
47
+
48
+ orderUpdated: ->
49
+ # TODO: Add flash message to display ordering success
50
+
51
+ $(document).on 'page:change', ->
52
+ $('.root-tree').each (i, el) ->
53
+ new Para.ResourceTree($(el))
@@ -0,0 +1,18 @@
1
+ #= require jquery
2
+ #= require jquery_ujs
3
+ #= require turbolinks
4
+ #= require bootstrap
5
+ #= require selectize
6
+ #= require jasny.bootstrap.min
7
+ #= require simple_form_extension
8
+ #= require jquery.scrollto
9
+ #= require html5-sortable
10
+ #= require cocoon
11
+ #= require_self
12
+ #= require_tree ./lib
13
+ #= require_tree ./inputs
14
+ #= require_tree ./admin
15
+ #= require admin/app
16
+
17
+ # Initialize scope
18
+ window.Para = {}
@@ -0,0 +1,13 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require_tree .
@@ -0,0 +1,57 @@
1
+ class Para.NestedManyField
2
+ constructor: (@$field) ->
3
+ @$fieldsList = @$field.find('.fields-list')
4
+
5
+ @initializeOrderable()
6
+ @initializeCocoon()
7
+
8
+ @$field.on 'shown.bs.collapse', $.proxy(@collapseShown, this)
9
+
10
+ initializeOrderable: ->
11
+ @orderable = @$field.hasClass('orderable')
12
+ return unless @orderable
13
+
14
+ @$fieldsList.sortable
15
+ handle: '.order-anchor'
16
+ forcePlaceholderSize: true
17
+
18
+ @$fieldsList.on('sortupdate', $.proxy(@sortUpdate, this))
19
+
20
+ sortUpdate: (e, ui) ->
21
+ @$fieldsList.find('.form-fields').each (i, el) ->
22
+ $(el).find('.resource-position-field').val(i)
23
+
24
+ initializeCocoon: ->
25
+ @$fieldsList.on 'cocoon:after-insert', $.proxy(@afterInsertField, this)
26
+
27
+ afterInsertField: (e, $element) ->
28
+ if ($collapsible = $element.find('[data-open-on-insert="true"]')).length
29
+ @openInsertedField($collapsible)
30
+
31
+ if @orderable
32
+ @$fieldsList.sortable('destroy')
33
+ @initializeOrderable()
34
+
35
+ if ($redactor = $element.find('[data-redactor]')).length
36
+ $redactor.simpleFormRedactor()
37
+
38
+ if ($selectize = $element.find('[data-selectize]'))
39
+ $selectize.simpleFormSelectize()
40
+
41
+ if ($slider = $element.find('[data-slider]'))
42
+ $slider.simpleFormSlider()
43
+
44
+ openInsertedField: ($field) ->
45
+ $target = $($field.attr('href'))
46
+ $target.collapse('show')
47
+
48
+ collapseShown: (e) ->
49
+ $target = $(e.target)
50
+ $field = @$field.find("[data-toggle='collapse'][href='##{ $target.attr('id') }']")
51
+ scrollOffset = -($('[data-header]').outerHeight() + 20)
52
+ $.scrollTo($field, 200, offset: scrollOffset)
53
+ $target.find('input, textarea, select').eq('0').focus()
54
+
55
+
56
+ $(document).on 'page:change', ->
57
+ $('.nested-many-field').each (i, el) -> new Para.NestedManyField($(el))
@@ -0,0 +1,11 @@
1
+ Para.ajax = (options = {}) ->
2
+ csrfParam = $('meta[name="csrf-param"]').attr('content')
3
+ csrfToken = $('meta[name="csrf-token"]').attr('content')
4
+
5
+ csrfOptions = {}
6
+ csrfOptions[csrfParam] = csrfToken if csrfParam and csrfToken
7
+
8
+ unless options.method and options.method.match(/get/i)
9
+ options = $.extend(csrfOptions, options)
10
+
11
+ $.ajax(options)
File without changes
File without changes
@@ -0,0 +1,170 @@
1
+
2
+ @import url('//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,400,300,500,600,700&subset=latin,cyrillic-ext')
3
+
4
+ @import "variables"
5
+ @import "compass/css3/transition"
6
+ @import "compass/css3/box-shadow"
7
+
8
+ html *
9
+ outline: 0!important
10
+
11
+ body, html
12
+ min-height: 100%
13
+ position: relative
14
+ overflow-x: hidden
15
+ -webkit-font-smoothing: antialiased
16
+ -moz-osx-font-smoothing: grayscale
17
+
18
+ .body-full-height
19
+ body
20
+ height: 100%
21
+
22
+ .row
23
+ margin-left: 0
24
+ margin-right: 0
25
+ [class^=col-lg-], [class^=col-md-], [class^=col-sm-], [class^=col-xs-]
26
+ min-height: 1px
27
+ &.stacked
28
+ [class^=col-lg-], [class^=col-md-], [class^=col-sm-], [class^=col-xs-]
29
+ padding-left: 0
30
+ padding-right: 0
31
+
32
+ [class^=col-lg-], [class^=col-md-], [class^=col-sm-], [class^=col-xs-]
33
+ padding-left: 10px
34
+ padding-right: 10px
35
+
36
+ // Main container
37
+ // -------------------------
38
+
39
+ .page-container
40
+ width: 100%
41
+ float: left
42
+ min-height: 100%
43
+ position: relative
44
+ background: $navbar-default-bg
45
+
46
+ // Right side Content
47
+ .page-content
48
+ min-height: 100%
49
+ margin-left: $left-menu-width-open
50
+ background-color: $body-bg
51
+ position: relative
52
+ zoom: 1
53
+ &:after, &:before
54
+ content: ""
55
+ display: table
56
+ &:after
57
+ clear: both
58
+
59
+ // Frame system (no border, with right or left sidebar)
60
+ .content-frame
61
+ float: left
62
+ width: 100%
63
+ position: relative
64
+ background-color: $body-bg
65
+
66
+ .content-frame-top
67
+ float: left
68
+ width: 100%
69
+ line-height: 30px
70
+ padding: 13px 15px 15px
71
+ background: rgba(0, 0, 0, 0.02)
72
+ border-bottom: 1px solid $panel-default-border
73
+ border-top: 1px solid $panel-default-border
74
+ .page-title
75
+ padding: 0
76
+ width: auto
77
+ h2
78
+ margin-bottom: 0
79
+ font-size: 22px
80
+
81
+ .content-frame-left
82
+ float: left
83
+ width: $content-frame-with
84
+ padding: 10px
85
+ min-height: 100%
86
+ background: rgba(0, 0, 0, 0.02)
87
+ border-right: 1px solid $panel-default-border
88
+ &.padding-0
89
+ padding: 0
90
+ .block
91
+ padding: 0
92
+ margin-bottom: 20px
93
+ h4
94
+ margin-top: 10px
95
+ > .form-group
96
+ margin-bottom: 20px
97
+
98
+ .content-frame-right
99
+ float: right
100
+ width: $content-frame-with
101
+ padding: 10px
102
+ min-height: 100%
103
+ background: rgba(0, 0, 0, 0.02)
104
+ border-left: 1px solid $panel-default-border
105
+ &.padding-0
106
+ padding: 0
107
+ .block
108
+ padding: 10px
109
+ h4
110
+ margin-top: 10px
111
+ .block
112
+ padding: 0
113
+ margin-bottom: 20px
114
+ > .form-group
115
+ margin-bottom: 20px
116
+
117
+ .content-frame-body
118
+ padding: 70px 10px 10px
119
+ margin-left: $content-frame-with
120
+ &.content-frame-body-left
121
+ margin-left: 0
122
+ margin-right: $content-frame-with
123
+
124
+ // Basic content frame
125
+ .page-content-wrap
126
+ float: left
127
+ width: 100%
128
+ padding: 0 25px
129
+
130
+ // Top navigation fixed
131
+ &.page-navigation-top-fixed
132
+ .navigation-horizontal
133
+ position: fixed
134
+ top: 0
135
+ right: 0
136
+ left: 0
137
+ .page-content
138
+ padding-top: $navbar-height
139
+
140
+ /* Animations */
141
+ @-webkit-keyframes pulsate
142
+ 0%
143
+ opacity: 0.0
144
+
145
+ 50%
146
+ opacity: 1.0
147
+
148
+ 100%
149
+ opacity: 0.0
150
+
151
+ @-moz-keyframes pulsate
152
+ 0%
153
+ opacity: 0.0
154
+
155
+ 50%
156
+ opacity: 1.0
157
+
158
+ 100%
159
+ opacity: 0.0
160
+
161
+ @keyframes pulsate
162
+ 0%
163
+ opacity: 0.0
164
+
165
+ 50%
166
+ opacity: 1.0
167
+
168
+ 100%
169
+ opacity: 0.0
170
+
@@ -0,0 +1,29 @@
1
+ @import 'variables'
2
+ @import "compass/css3/border-radius"
3
+
4
+ .breadcrumb
5
+ width: 100%
6
+ background: $breadcrumb-bg
7
+ margin-bottom: 0px
8
+ padding: 6px 15px 7px
9
+ +border-radius(0)
10
+ li
11
+ font-size: 11px
12
+ line-height: 12px
13
+ color: $breadcrumb-color
14
+ text-decoration: none
15
+ a
16
+ font-size: 11px
17
+ line-height: 12px
18
+ color: $breadcrumb-color
19
+ text-decoration: none
20
+ &:hover
21
+ color: $breadcrumb-active-color
22
+ &:hover, &:last-child
23
+ color: $breadcrumb-active-color
24
+ > li + li:before
25
+ font-family: FontAwesome
26
+ content: "\f105"
27
+ color: $breadcrumb-color
28
+ padding: 0 8px
29
+
@@ -0,0 +1,24 @@
1
+ @import 'variables'
2
+ @import "compass/css3/border-radius"
3
+
4
+ .btn
5
+ .fa, .glyphicon
6
+ font-size: 14px
7
+ margin-right: 3px
8
+
9
+ // Social network color
10
+ &.btn-twitter
11
+ background: #1AB2E8
12
+ border-color: #1AB2E8
13
+ &.active, &:active, &:focus, &:hover
14
+ background: #15a1d3
15
+ &.btn-facebook
16
+ background: #3C599B
17
+ border-color: #3C599B
18
+ &.active, &:active, &:focus, &:hover
19
+ background: #354e89
20
+ &.btn-google
21
+ background: #E04A39
22
+ border-color: #E04A39
23
+ &.active, &:active, &:focus, &:hover
24
+ background: #dd3623
@@ -0,0 +1,107 @@
1
+ @import 'variables'
2
+ @import "compass/css3/inline-block"
3
+
4
+ @mixin fontAwesome
5
+ font-family: FontAwesome
6
+ font-weight: normal
7
+ font-style: normal
8
+ text-decoration: inherit
9
+ -webkit-font-smoothing: antialiased
10
+ /* sprites.less reset */
11
+ +inline-block
12
+ width: auto
13
+ height: auto
14
+ line-height: normal
15
+ vertical-align: baseline
16
+ background-image: none
17
+ background-position: 0% 0%
18
+ background-repeat: repeat
19
+ margin-top: 0
20
+
21
+ // ------------------------ Radio & Checkbox ------------------------- //
22
+ .radio label,
23
+ .checkbox label
24
+ padding-left: 0
25
+ font-weight: 600
26
+ i
27
+ font-size: 20px
28
+ margin-left: 20px
29
+ float: right
30
+ line-height: 1
31
+
32
+ .form-group.boolean
33
+ [class^="col-"] label
34
+ margin-bottom: 0
35
+ padding-top: 2px
36
+ i
37
+ font-size: 20px
38
+ line-height: 1
39
+
40
+ .form-group.boolean input[type=checkbox],
41
+ .form-group.boolean input[type=radio],
42
+ .checkbox input[type=checkbox],
43
+ .radio input[type=radio]
44
+ position: absolute
45
+ overflow: hidden
46
+ clip: rect(0 0 0 0)
47
+ height: 1px
48
+ width: 1px
49
+ margin: -1px
50
+ padding: 0
51
+ border: 0
52
+
53
+ input[type=checkbox]:checked + label.check_boxes:before,
54
+ input[type=checkbox]:checked + .checkbox-icon:before
55
+ content: "\f046"
56
+
57
+ input[type=checkbox]:focus + label.check_boxes:before,
58
+ input[type=checkbox]:focus + .checkbox-icon:before
59
+ color: $input-border-focus
60
+
61
+ .boolean .checkbox-icon,
62
+ .checkbox .checkbox-icon
63
+ &:hover
64
+ &:before
65
+ color: $input-border-focus
66
+ &:before
67
+ +fontAwesome
68
+ content: "\f096"
69
+ color: $input-border
70
+
71
+ input[type=radio]:checked + label.radio_buttons:before,
72
+ input[type=radio]:checked + .radio-icon:before
73
+ content: "\f192"
74
+
75
+ input[type=radio]:focus + label.radio_buttons:before,
76
+ input[type=radio]:focus + .radio-icon:before
77
+ color: $input-border-focus
78
+
79
+ .boolean .radio-icon,
80
+ .radio .radio-icon
81
+ &:hover
82
+ &:before
83
+ color: $input-border-focus
84
+ &:before
85
+ +fontAwesome
86
+ content: "\f10c"
87
+ color: $input-border
88
+
89
+ // INLINE OVERRIDE //
90
+ .radio-inline,
91
+ .checkbox-inline
92
+ padding-left: 0
93
+ label.form-control
94
+ height: auto
95
+ margin-bottom: 5px
96
+ padding: 0
97
+ color: black
98
+ font-weight: normal
99
+ border: none
100
+ background-color: transparent
101
+ background: none
102
+ +inline-block
103
+ &:hover
104
+ cursor: pointer
105
+ &:before
106
+ display: inline-block
107
+ width: 20px