kms 0.9.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{vendor/assets/bower_components/Responsive-Dashboard/src/img → app/assets/images}/avatar.jpg +0 -0
- data/app/assets/javascripts/kms/application.js +3 -0
- data/app/assets/javascripts/kms/application/controllers/assets_controller.coffee.erb +14 -7
- data/app/assets/javascripts/kms/application/controllers/pages_controller.coffee.erb +11 -3
- data/app/assets/javascripts/kms/application/controllers/snippets_controller.coffee.erb +3 -0
- data/app/assets/javascripts/kms/application/controllers/templates_controller.coffee.erb +3 -0
- data/app/assets/javascripts/kms/application/controllers/users_controller.coffee +4 -4
- data/app/assets/javascripts/kms/application/routes.coffee.erb +1 -1
- data/app/assets/javascripts/kms/application/services/transliteration_service.js +160 -0
- data/app/assets/javascripts/templates/assets/edit.html.slim +24 -2
- data/app/assets/javascripts/templates/assets/form.html.slim +23 -0
- data/app/assets/javascripts/templates/assets/index.html.slim +13 -12
- data/app/assets/javascripts/templates/assets/new.html.slim +1 -15
- data/app/assets/javascripts/templates/help.html.slim +1 -1
- data/app/assets/javascripts/templates/pages/index.html.slim +16 -5
- data/app/assets/javascripts/templates/snippets/index.html.slim +16 -5
- data/app/assets/javascripts/templates/templates/index.html.slim +16 -6
- data/app/assets/stylesheets/kms/application.css +2 -2
- data/app/assets/stylesheets/kms/custom.css.scss +38 -0
- data/app/controllers/kms/assets_controller.rb +8 -9
- data/app/controllers/kms/pages_controller.rb +10 -11
- data/app/controllers/kms/public/pages_controller.rb +5 -4
- data/app/controllers/kms/public/search_controller.rb +2 -0
- data/app/controllers/kms/settings_controller.rb +1 -1
- data/app/controllers/kms/snippets_controller.rb +2 -1
- data/app/controllers/kms/templates_controller.rb +6 -5
- data/app/controllers/kms/users_controller.rb +11 -8
- data/app/models/ability.rb +1 -0
- data/app/models/concerns/kms/permalinkable.rb +1 -1
- data/app/models/kms/page.rb +13 -4
- data/app/serializers/kms/asset_serializer.rb +6 -0
- data/app/serializers/kms/page_serializer.rb +5 -0
- data/app/serializers/kms/template_serializer.rb +5 -0
- data/app/serializers/kms/user_serializer.rb +5 -0
- data/app/services/kms/page_fetcher.rb +30 -0
- data/app/services/kms/search_service.rb +28 -3
- data/app/services/kms/template_processor.rb +19 -0
- data/app/views/devise/passwords/edit.html.erb +1 -1
- data/app/views/devise/passwords/new.html.erb +1 -1
- data/app/views/devise/registrations/new.html.erb +1 -1
- data/app/views/devise/sessions/new.html.erb +1 -1
- data/app/views/layouts/kms/devise.html.erb +1 -1
- data/app/views/layouts/kms/kms.html.erb +47 -18
- data/config/initializers/externals.rb +6 -32
- data/config/initializers/search.rb +1 -0
- data/config/locales/en.yml +17 -1
- data/config/locales/ru.yml +17 -1
- data/config/routes.rb +7 -6
- data/lib/kms/dependencies.rb +1 -4
- data/lib/kms/engine.rb +1 -2
- data/lib/kms/search_item.rb +18 -0
- data/lib/kms/version.rb +1 -1
- data/spec/controllers/kms/assets_controller_spec.rb +51 -0
- data/spec/controllers/kms/pages_controller_spec.rb +82 -0
- data/spec/controllers/kms/public/pages_controller_spec.rb +30 -0
- data/spec/controllers/kms/snippets_controller_spec.rb +61 -47
- data/spec/controllers/kms/templates_controller_spec.rb +51 -0
- data/spec/controllers/kms/users_controller_spec.rb +56 -0
- data/spec/factories/assets.rb +8 -0
- data/spec/factories/pages.rb +33 -0
- data/spec/factories/templates.rb +20 -0
- data/spec/factories/users.rb +9 -4
- data/spec/internal/config/routes.rb +12 -1
- data/spec/internal/log/test.log +81239 -0
- data/spec/internal/public/404.html +67 -0
- data/spec/internal/public/avatar.jpg +0 -0
- data/spec/internal/public/style.css +1 -0
- data/spec/internal/public/uploads/kms/asset/file/1/avatar.jpg +0 -0
- data/spec/internal/public/uploads/kms/asset/file/2/avatar.jpg +0 -0
- data/spec/internal/public/uploads/kms/asset/file/2/style.css +1 -0
- data/spec/internal/public/uploads/kms/asset/file/3/style.css +1 -0
- data/spec/internal/public/uploads/kms/asset/file/4/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500976987-41025-0002-0883/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977082-41195-0002-6495/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977109-41364-0002-4518/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977152-41405-0002-2345/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977327-41694-0002-5448/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977376-41732-0002-7916/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977392-41759-0002-7593/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977410-42259-0002-7527/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977429-42306-0002-5937/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977437-42324-0002-5880/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983228-53594-0002-4559/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983284-53632-0002-6590/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983360-53784-0002-7289/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983469-54321-0002-0386/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500983469-54321-0004-5691/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983511-54352-0002-5720/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500983511-54352-0004-1399/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983610-54507-0002-4280/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500983610-54507-0004-9758/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500984466-57012-0002-4146/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500984466-57012-0004-5895/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500984509-57158-0002-9657/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500984509-57158-0004-5003/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500984616-57697-0002-7201/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500984616-57697-0004-6255/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985257-58947-0002-3629/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500985257-58947-0004-5338/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985407-58947-0006-5929/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985473-59264-0002-0397/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500985473-59264-0004-6493/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985475-59264-0007-8674/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985538-59468-0002-9206/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500985538-59468-0004-2586/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985538-59468-0007-6200/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988358-65877-0002-4528/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988358-65877-0004-5904/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988358-65877-0007-7320/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988407-65916-0002-3138/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988407-65916-0004-5400/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988407-65916-0007-1655/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988421-65950-0002-9415/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988421-65950-0004-7130/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988421-65950-0007-9886/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988435-65981-0002-3228/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988435-65981-0004-3682/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988435-65981-0007-1582/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988475-66122-0002-9516/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988475-66122-0004-5634/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988530-66122-0007-2272/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988554-66315-0002-6262/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988554-66315-0004-6099/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988554-66315-0007-1632/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500991751-73722-0002-9937/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500991751-73722-0004-8034/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500991751-73722-0007-7763/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1501233238-34385-0002-3210/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1501233238-34385-0004-5881/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1501233238-34385-0007-6280/style.css +1 -0
- data/spec/models/kms/page_spec.rb +31 -0
- data/spec/models/kms/template_spec.rb +15 -0
- data/spec/services/kms/page_fetcher_spec.rb +36 -0
- data/spec/services/kms/search_service_spec.rb +53 -0
- data/spec/services/kms/template_processor_spec.rb +20 -0
- data/spec/support/controller_macros.rb +9 -1
- data/vendor/assets/bower.json +3 -2
- data/vendor/assets/bower_components/angular-ui-select/CHANGELOG.md +169 -0
- data/vendor/assets/bower_components/angular-ui-select/CONTRIBUTING.md +161 -0
- data/vendor/assets/bower_components/angular-ui-select/README.md +27 -13
- data/vendor/assets/bower_components/angular-ui-select/bower.json +6 -3
- data/vendor/assets/bower_components/angular-ui-select/composer.json +29 -0
- data/vendor/assets/bower_components/angular-ui-select/deploy-docs.sh +31 -0
- data/vendor/assets/bower_components/angular-ui-select/dist/select.css +48 -2
- data/vendor/assets/bower_components/angular-ui-select/dist/select.js +454 -111
- data/vendor/assets/bower_components/angular-ui-select/dist/select.min.css +2 -2
- data/vendor/assets/bower_components/angular-ui-select/dist/select.min.js +2 -2
- data/vendor/assets/bower_components/angular-ui-select/docs/assets/app.js +1 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/assets/demo.js +461 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/assets/docs.css +339 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/assets/plunkr.js +110 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/index.html +191 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/partials/_footer.html +2 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/partials/_header.html +64 -0
- data/vendor/assets/bower_components/angular-ui-select/index.js +2 -0
- data/vendor/assets/bower_components/angular-ui-select/package.json +36 -15
- data/vendor/assets/bower_components/bootstrap/CHANGELOG.md +5 -0
- data/vendor/assets/bower_components/bootstrap/Gemfile +6 -0
- data/vendor/assets/bower_components/bootstrap/Gemfile.lock +43 -0
- data/vendor/assets/bower_components/bootstrap/Gruntfile.js +176 -145
- data/vendor/assets/bower_components/bootstrap/ISSUE_TEMPLATE.md +22 -0
- data/vendor/assets/bower_components/bootstrap/LICENSE +1 -1
- data/vendor/assets/bower_components/bootstrap/README.md +55 -40
- data/vendor/assets/bower_components/bootstrap/bower.json +5 -9
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css +204 -59
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +1 -1
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +4 -3
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map +1 -0
- data/vendor/assets/bower_components/bootstrap/dist/css/{bootstrap.less → bootstrap.css} +881 -327
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css.map +1 -1
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css +6 -0
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css.map +1 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +272 -213
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.js +549 -286
- data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js +5 -4
- data/vendor/assets/bower_components/bootstrap/dist/js/npm.js +13 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +272 -213
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/vendor/assets/bower_components/bootstrap/grunt/bs-commonjs-generator.js +30 -0
- data/vendor/assets/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +5 -4
- data/vendor/assets/bower_components/bootstrap/grunt/bs-lessdoc-parser.js +13 -12
- data/vendor/assets/bower_components/bootstrap/grunt/bs-raw-files-generator.js +6 -8
- data/vendor/assets/bower_components/bootstrap/grunt/change-version.js +109 -0
- data/vendor/assets/bower_components/bootstrap/grunt/configBridge.json +46 -0
- data/vendor/assets/bower_components/bootstrap/grunt/npm-shrinkwrap.json +2679 -0
- data/vendor/assets/bower_components/bootstrap/grunt/sauce_browsers.yml +5 -5
- data/vendor/assets/bower_components/bootstrap/js/affix.js +46 -26
- data/vendor/assets/bower_components/bootstrap/js/alert.js +8 -6
- data/vendor/assets/bower_components/bootstrap/js/button.js +34 -19
- data/vendor/assets/bower_components/bootstrap/js/carousel.js +35 -21
- data/vendor/assets/bower_components/bootstrap/js/collapse.js +69 -27
- data/vendor/assets/bower_components/bootstrap/js/dropdown.js +55 -41
- data/vendor/assets/bower_components/bootstrap/js/modal.js +91 -32
- data/vendor/assets/bower_components/bootstrap/js/popover.js +5 -10
- data/vendor/assets/bower_components/bootstrap/js/scrollspy.js +28 -26
- data/vendor/assets/bower_components/bootstrap/js/tab.js +45 -18
- data/vendor/assets/bower_components/bootstrap/js/tooltip.js +117 -54
- data/vendor/assets/bower_components/bootstrap/js/transition.js +2 -2
- data/vendor/assets/bower_components/bootstrap/less/alerts.less +5 -0
- data/vendor/assets/bower_components/bootstrap/less/badges.less +14 -3
- data/vendor/assets/bower_components/bootstrap/less/bootstrap.less +6 -0
- data/vendor/assets/bower_components/bootstrap/less/button-groups.less +22 -18
- data/vendor/assets/bower_components/bootstrap/less/buttons.less +19 -10
- data/vendor/assets/bower_components/bootstrap/less/carousel.less +34 -7
- data/vendor/assets/bower_components/bootstrap/less/close.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/code.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/component-animations.less +3 -1
- data/vendor/assets/bower_components/bootstrap/less/dropdowns.less +9 -8
- data/vendor/assets/bower_components/bootstrap/less/forms.less +123 -50
- data/vendor/assets/bower_components/bootstrap/less/glyphicons.less +75 -3
- data/vendor/assets/bower_components/bootstrap/less/input-groups.less +8 -3
- data/vendor/assets/bower_components/bootstrap/less/jumbotron.less +10 -4
- data/vendor/assets/bower_components/bootstrap/less/list-group.less +10 -11
- data/vendor/assets/bower_components/bootstrap/less/media.less +40 -30
- data/vendor/assets/bower_components/bootstrap/less/mixins.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/background-variant.less +2 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/buttons.less +19 -4
- data/vendor/assets/bower_components/bootstrap/less/mixins/forms.less +5 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/grid-framework.less +4 -4
- data/vendor/assets/bower_components/bootstrap/less/mixins/grid.less +4 -4
- data/vendor/assets/bower_components/bootstrap/less/mixins/hide-text.less +2 -2
- data/vendor/assets/bower_components/bootstrap/less/mixins/image.less +0 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/labels.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/list-group.less +2 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/pagination.less +2 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/reset-text.less +18 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/responsive-visibility.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/tab-focus.less +3 -3
- data/vendor/assets/bower_components/bootstrap/less/mixins/text-emphasis.less +2 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/vendor-prefixes.less +8 -5
- data/vendor/assets/bower_components/bootstrap/less/modals.less +3 -3
- data/vendor/assets/bower_components/bootstrap/less/navbar.less +30 -25
- data/vendor/assets/bower_components/bootstrap/less/navs.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/normalize.less +12 -13
- data/vendor/assets/bower_components/bootstrap/less/pager.less +1 -2
- data/vendor/assets/bower_components/bootstrap/less/pagination.less +5 -4
- data/vendor/assets/bower_components/bootstrap/less/panels.less +33 -5
- data/vendor/assets/bower_components/bootstrap/less/popovers.less +5 -7
- data/vendor/assets/bower_components/bootstrap/less/print.less +96 -96
- data/vendor/assets/bower_components/bootstrap/less/progress-bars.less +1 -19
- data/vendor/assets/bower_components/bootstrap/less/responsive-embed.less +10 -9
- data/vendor/assets/bower_components/bootstrap/less/scaffolding.less +13 -2
- data/vendor/assets/bower_components/bootstrap/less/tables.less +14 -13
- data/vendor/assets/bower_components/bootstrap/less/theme.less +49 -16
- data/vendor/assets/bower_components/bootstrap/less/thumbnails.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/tooltip.less +13 -7
- data/vendor/assets/bower_components/bootstrap/less/type.less +2 -13
- data/vendor/assets/bower_components/bootstrap/less/utilities.less +0 -2
- data/vendor/assets/bower_components/bootstrap/less/variables.less +45 -22
- data/vendor/assets/bower_components/bootstrap/nuget/MyGet.ps1 +8 -0
- data/vendor/assets/bower_components/bootstrap/nuget/bootstrap.less.nuspec +28 -0
- data/vendor/assets/bower_components/bootstrap/nuget/bootstrap.nuspec +28 -0
- data/vendor/assets/bower_components/bootstrap/package.js +32 -0
- data/vendor/assets/bower_components/bootstrap/package.json +49 -41
- data/vendor/assets/bower_components/flow.js/README.md +79 -64
- data/vendor/assets/bower_components/flow.js/bower.json +6 -2
- data/vendor/assets/bower_components/flow.js/dist/flow.js +1635 -1532
- data/vendor/assets/bower_components/flow.js/dist/flow.min.js +2 -2
- data/vendor/assets/bower_components/flow.js/package.js +24 -0
- data/vendor/assets/bower_components/flow.js/travis.sh +19 -0
- data/vendor/assets/bower_components/font-awesome/scss/_path.scss +5 -5
- data/vendor/assets/bower_components/font-awesome/scss/_variables.scss +1 -2
- data/vendor/assets/bower_components/ng-flow/bower.json +1 -1
- data/vendor/assets/bower_components/ng-flow/dist/ng-flow-standalone.js +1655 -1542
- data/vendor/assets/bower_components/ng-flow/dist/ng-flow-standalone.min.js +2 -2
- data/vendor/assets/bower_components/ng-flow/dist/ng-flow.js +19 -9
- data/vendor/assets/bower_components/ng-flow/dist/ng-flow.min.js +2 -2
- data/vendor/assets/bower_components/ng-flow/index.js +3 -0
- data/vendor/assets/bower_components/ng-flow/package.js +25 -0
- data/vendor/assets/bower_components/ng-flow/src/directives/drag-events.js +2 -1
- data/vendor/assets/bower_components/ng-flow/src/directives/events.js +2 -1
- data/vendor/assets/bower_components/ng-flow/src/directives/init.js +7 -1
- data/vendor/assets/bower_components/ng-flow/travis.sh +19 -0
- data/vendor/assets/bower_components/{Responsive-Dashboard → rdash-ui}/LICENSE +21 -21
- data/vendor/assets/bower_components/rdash-ui/README.md +55 -0
- data/vendor/assets/bower_components/rdash-ui/bower.json +33 -0
- data/vendor/assets/bower_components/rdash-ui/dist/css/rdash.min.css +1 -0
- data/vendor/assets/bower_components/rdash-ui/dist/css/rdash.scss +489 -0
- data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.eot +0 -0
- data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.svg +1316 -1316
- data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.ttf +0 -0
- data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.woff +0 -0
- metadata +227 -180
- data/config/initializers/bower_rails.rb +0 -16
- data/vendor/assets/bower_components/Responsive-Dashboard/CONTRIBUTING.md +0 -21
- data/vendor/assets/bower_components/Responsive-Dashboard/README.md +0 -119
- data/vendor/assets/bower_components/Responsive-Dashboard/bower.json +0 -32
- data/vendor/assets/bower_components/Responsive-Dashboard/gulpfile.js +0 -81
- data/vendor/assets/bower_components/Responsive-Dashboard/package.json +0 -21
- data/vendor/assets/bower_components/Responsive-Dashboard/src/index.html +0 -413
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/controllers/alerts-ctrl.js +0 -19
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/controllers/master-ctrl.js +0 -51
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/loading.js +0 -13
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/widget-body.js +0 -16
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/widget-header.js +0 -17
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/widget.js +0 -16
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/module.js +0 -1
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/routes.js +0 -22
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/content.less +0 -19
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/hamburg.less +0 -29
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/header.less +0 -92
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/loading.less +0 -40
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/main.less +0 -73
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/mixins.less +0 -5
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/sidebar.less +0 -122
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/variables.less +0 -10
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/widgets.less +0 -95
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css.erb +0 -5
- data/vendor/assets/bower_components/flow.js/CHANGELOG.md +0 -37
- data/vendor/assets/bower_components/flow.js/Gruntfile.js +0 -132
- data/vendor/assets/bower_components/flow.js/karma.conf.js +0 -114
- data/vendor/assets/bower_components/flow.js/package.json +0 -50
- data/vendor/assets/bower_components/flow.js/src/flow.js +0 -1532
- data/vendor/assets/bower_components/jquery/MIT-LICENSE.txt +0 -21
- data/vendor/assets/bower_components/jquery/bower.json +0 -27
- data/vendor/assets/bower_components/jquery/dist/jquery.js +0 -9190
- data/vendor/assets/bower_components/jquery/dist/jquery.min.js +0 -5
- data/vendor/assets/bower_components/jquery/dist/jquery.min.map +0 -1
- data/vendor/assets/bower_components/jquery/src/ajax.js +0 -806
- data/vendor/assets/bower_components/jquery/src/ajax/jsonp.js +0 -89
- data/vendor/assets/bower_components/jquery/src/ajax/load.js +0 -75
- data/vendor/assets/bower_components/jquery/src/ajax/parseJSON.js +0 -13
- data/vendor/assets/bower_components/jquery/src/ajax/parseXML.js +0 -28
- data/vendor/assets/bower_components/jquery/src/ajax/script.js +0 -64
- data/vendor/assets/bower_components/jquery/src/ajax/var/nonce.js +0 -5
- data/vendor/assets/bower_components/jquery/src/ajax/var/rquery.js +0 -3
- data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +0 -135
- data/vendor/assets/bower_components/jquery/src/attributes.js +0 -11
- data/vendor/assets/bower_components/jquery/src/attributes/attr.js +0 -143
- data/vendor/assets/bower_components/jquery/src/attributes/classes.js +0 -158
- data/vendor/assets/bower_components/jquery/src/attributes/prop.js +0 -96
- data/vendor/assets/bower_components/jquery/src/attributes/support.js +0 -35
- data/vendor/assets/bower_components/jquery/src/attributes/val.js +0 -163
- data/vendor/assets/bower_components/jquery/src/callbacks.js +0 -205
- data/vendor/assets/bower_components/jquery/src/core.js +0 -498
- data/vendor/assets/bower_components/jquery/src/core/access.js +0 -60
- data/vendor/assets/bower_components/jquery/src/core/init.js +0 -123
- data/vendor/assets/bower_components/jquery/src/core/parseHTML.js +0 -39
- data/vendor/assets/bower_components/jquery/src/core/ready.js +0 -97
- data/vendor/assets/bower_components/jquery/src/core/var/rsingleTag.js +0 -4
- data/vendor/assets/bower_components/jquery/src/css.js +0 -451
- data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +0 -24
- data/vendor/assets/bower_components/jquery/src/css/curCSS.js +0 -57
- data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +0 -70
- data/vendor/assets/bower_components/jquery/src/css/hiddenVisibleSelectors.js +0 -15
- data/vendor/assets/bower_components/jquery/src/css/support.js +0 -91
- data/vendor/assets/bower_components/jquery/src/css/swap.js +0 -28
- data/vendor/assets/bower_components/jquery/src/css/var/cssExpand.js +0 -3
- data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +0 -5
- data/vendor/assets/bower_components/jquery/src/css/var/isHidden.js +0 -13
- data/vendor/assets/bower_components/jquery/src/css/var/rmargin.js +0 -3
- data/vendor/assets/bower_components/jquery/src/css/var/rnumnonpx.js +0 -5
- data/vendor/assets/bower_components/jquery/src/data.js +0 -179
- data/vendor/assets/bower_components/jquery/src/data/Data.js +0 -181
- data/vendor/assets/bower_components/jquery/src/data/accepts.js +0 -20
- data/vendor/assets/bower_components/jquery/src/data/var/data_priv.js +0 -5
- data/vendor/assets/bower_components/jquery/src/data/var/data_user.js +0 -5
- data/vendor/assets/bower_components/jquery/src/deferred.js +0 -149
- data/vendor/assets/bower_components/jquery/src/deprecated.js +0 -13
- data/vendor/assets/bower_components/jquery/src/dimensions.js +0 -50
- data/vendor/assets/bower_components/jquery/src/effects.js +0 -649
- data/vendor/assets/bower_components/jquery/src/effects/Tween.js +0 -114
- data/vendor/assets/bower_components/jquery/src/effects/animatedSelector.js +0 -13
- data/vendor/assets/bower_components/jquery/src/event.js +0 -868
- data/vendor/assets/bower_components/jquery/src/event/alias.js +0 -39
- data/vendor/assets/bower_components/jquery/src/event/support.js +0 -9
- data/vendor/assets/bower_components/jquery/src/exports/amd.js +0 -24
- data/vendor/assets/bower_components/jquery/src/exports/global.js +0 -32
- data/vendor/assets/bower_components/jquery/src/intro.js +0 -44
- data/vendor/assets/bower_components/jquery/src/jquery.js +0 -36
- data/vendor/assets/bower_components/jquery/src/manipulation.js +0 -582
- data/vendor/assets/bower_components/jquery/src/manipulation/_evalUrl.js +0 -18
- data/vendor/assets/bower_components/jquery/src/manipulation/support.js +0 -31
- data/vendor/assets/bower_components/jquery/src/manipulation/var/rcheckableType.js +0 -3
- data/vendor/assets/bower_components/jquery/src/offset.js +0 -204
- data/vendor/assets/bower_components/jquery/src/outro.js +0 -1
- data/vendor/assets/bower_components/jquery/src/queue.js +0 -142
- data/vendor/assets/bower_components/jquery/src/queue/delay.js +0 -22
- data/vendor/assets/bower_components/jquery/src/selector-native.js +0 -172
- data/vendor/assets/bower_components/jquery/src/selector-sizzle.js +0 -14
- data/vendor/assets/bower_components/jquery/src/selector.js +0 -1
- data/vendor/assets/bower_components/jquery/src/serialize.js +0 -111
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.js +0 -2044
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.js +0 -3
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.map +0 -1
- data/vendor/assets/bower_components/jquery/src/traversing.js +0 -200
- data/vendor/assets/bower_components/jquery/src/traversing/findFilter.js +0 -100
- data/vendor/assets/bower_components/jquery/src/traversing/var/rneedsContext.js +0 -6
- data/vendor/assets/bower_components/jquery/src/var/arr.js +0 -3
- data/vendor/assets/bower_components/jquery/src/var/class2type.js +0 -4
- data/vendor/assets/bower_components/jquery/src/var/concat.js +0 -5
- data/vendor/assets/bower_components/jquery/src/var/hasOwn.js +0 -5
- data/vendor/assets/bower_components/jquery/src/var/indexOf.js +0 -5
- data/vendor/assets/bower_components/jquery/src/var/pnum.js +0 -3
- data/vendor/assets/bower_components/jquery/src/var/push.js +0 -5
- data/vendor/assets/bower_components/jquery/src/var/rnotwhite.js +0 -3
- data/vendor/assets/bower_components/jquery/src/var/slice.js +0 -5
- data/vendor/assets/bower_components/jquery/src/var/strundefined.js +0 -3
- data/vendor/assets/bower_components/jquery/src/var/support.js +0 -4
- data/vendor/assets/bower_components/jquery/src/var/toString.js +0 -5
- data/vendor/assets/bower_components/jquery/src/wrap.js +0 -78
data/app/models/ability.rb
CHANGED
@@ -6,7 +6,7 @@ module Kms
|
|
6
6
|
def permalink
|
7
7
|
templatable_page = Kms::Page.where(templatable_type: self.class.name).first
|
8
8
|
if templatable_page
|
9
|
-
Pathname.new(templatable_page.parent.fullpath).join(
|
9
|
+
Pathname.new(templatable_page.parent.fullpath).join(slug.to_s).to_s
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
data/app/models/kms/page.rb
CHANGED
@@ -4,8 +4,9 @@ module Kms
|
|
4
4
|
include CompileTemplates
|
5
5
|
include Positioned
|
6
6
|
|
7
|
-
INDEX_SLUG =
|
8
|
-
INDEX_FULLPATH =
|
7
|
+
INDEX_SLUG = 'index'.freeze
|
8
|
+
INDEX_FULLPATH = ''
|
9
|
+
NOT_FOUND_SLUG = '404'.freeze
|
9
10
|
|
10
11
|
scope :published, lambda { where(published: true) }
|
11
12
|
scope :listed, lambda { where(hidden: false) }
|
@@ -19,10 +20,18 @@ module Kms
|
|
19
20
|
|
20
21
|
has_ancestry
|
21
22
|
|
23
|
+
def self.not_found_page
|
24
|
+
where(slug: NOT_FOUND_SLUG).first
|
25
|
+
end
|
26
|
+
|
22
27
|
def index?
|
23
28
|
slug == INDEX_SLUG
|
24
29
|
end
|
25
30
|
|
31
|
+
def not_found?
|
32
|
+
slug == NOT_FOUND_SLUG
|
33
|
+
end
|
34
|
+
|
26
35
|
def build_fullpath
|
27
36
|
if index?
|
28
37
|
self.fullpath = INDEX_FULLPATH # self.slug
|
@@ -39,9 +48,9 @@ module Kms
|
|
39
48
|
end
|
40
49
|
|
41
50
|
# fetch item by slug
|
42
|
-
def fetch_item
|
51
|
+
def fetch_item(slug)
|
43
52
|
return nil unless templatable?
|
44
|
-
templatable_type.constantize.find_by_slug
|
53
|
+
templatable_type.constantize.find_by_slug(slug)
|
45
54
|
end
|
46
55
|
|
47
56
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Kms
|
2
|
+
class PageFetcher
|
3
|
+
def initialize(path)
|
4
|
+
@path = path
|
5
|
+
end
|
6
|
+
|
7
|
+
def fetch!
|
8
|
+
page = Page.published.find_by_fullpath(@path) || fetch_templatable_page! || fetch_404_page
|
9
|
+
page ? page.to_drop : raise(ActiveRecord::RecordNotFound)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
# finds templatable page that works for path
|
15
|
+
def fetch_templatable_page!
|
16
|
+
parent_page_path = File.dirname(@path)
|
17
|
+
parent_page_path = Kms::Page::INDEX_FULLPATH if parent_page_path == "."
|
18
|
+
parent_page = Kms::Page.published.find_by_fullpath!(parent_page_path)
|
19
|
+
templatable_pages = parent_page.children.where(templatable: true)
|
20
|
+
templatable_pages.detect do |templatable_page|
|
21
|
+
templatable_page.fetch_item(File.basename(@path))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# find special page with '404' slug
|
26
|
+
def fetch_404_page
|
27
|
+
Kms::Page.not_found_page
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,11 +1,36 @@
|
|
1
1
|
module Kms
|
2
2
|
class SearchService
|
3
3
|
cattr_accessor :resources do
|
4
|
-
|
4
|
+
{}
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
|
7
|
+
def initialize(query='')
|
8
|
+
@query = query
|
9
9
|
end
|
10
|
+
|
11
|
+
# resource is a class
|
12
|
+
# attributes_map is a Hash
|
13
|
+
# where keys are SearchItem attributes like "title", "link" and "content"
|
14
|
+
# and values are corresponding resource attributes
|
15
|
+
def self.register(resource, attributes_map)
|
16
|
+
self.resources[resource] = attributes_map
|
17
|
+
end
|
18
|
+
|
19
|
+
def search
|
20
|
+
return [] if @query.blank?
|
21
|
+
|
22
|
+
search_results = Kms::SearchService.resources.map do |resource, attributes_map|
|
23
|
+
resource_items = resource.advanced_search(keywords.join('|'))
|
24
|
+
resource_items.map {|resource_item| Kms::SearchItem.item_for_searchable(resource_item, keywords, attributes_map) }
|
25
|
+
end
|
26
|
+
search_results.flatten
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def keywords
|
32
|
+
@query.split(' ')
|
33
|
+
end
|
34
|
+
|
10
35
|
end
|
11
36
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Kms
|
2
|
+
class TemplateProcessor
|
3
|
+
def initialize(template)
|
4
|
+
@template = template
|
5
|
+
end
|
6
|
+
|
7
|
+
def process
|
8
|
+
template_document = Nokogiri::HTML @template.content
|
9
|
+
template_document.search('script, link[rel="stylesheet"]').each do |tag|
|
10
|
+
tag.replace "{{ '#{File.basename(tag['src'] || tag['href'])}' | asset_tag }}"
|
11
|
+
end
|
12
|
+
# can't use Nokogiri for images because of Nokogiri escaping
|
13
|
+
template_document.search('img').each do |tag|
|
14
|
+
tag.replace %Q(<img src="{{ '#{File.basename(tag['src'])}' | asset_path }}" alt="#{tag['alt']}">)
|
15
|
+
end
|
16
|
+
template_document.to_html.gsub(/(%7B|%7D|%20|%7C)/,'%7B' => '{', '%7D' => '}', '%20' => ' ', '%7C' => '|')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="wrapper">
|
2
2
|
|
3
3
|
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { class: 'form-signin', method: :put }) do |f| %>
|
4
|
-
<h2 class="form-signin-heading">
|
4
|
+
<h2 class="form-signin-heading">APIQ</h2>
|
5
5
|
<h4>Change your password</h4>
|
6
6
|
<%= devise_error_messages! %>
|
7
7
|
<%= f.hidden_field :reset_password_token %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<div class="wrapper">
|
2
2
|
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { class: 'form-signin', method: :post }) do |f| %>
|
3
|
-
<h2 class="form-signin-heading">
|
3
|
+
<h2 class="form-signin-heading">APIQ</h2>
|
4
4
|
<%= devise_error_messages! %>
|
5
5
|
|
6
6
|
<h4>Forgot your password?</h4>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="wrapper">
|
2
2
|
|
3
3
|
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: {class: "form-signin"}) do |f| %>
|
4
|
-
<h2 class="form-signin-heading">
|
4
|
+
<h2 class="form-signin-heading">APIQ</h2>
|
5
5
|
<%= devise_error_messages! %>
|
6
6
|
|
7
7
|
<%= f.email_field :email, autofocus: true, class: 'form-control', placeholder: Kms::User.human_attribute_name(:email), required: '' %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<div class="wrapper">
|
2
2
|
<%= form_for(resource, as: resource_name, url: session_path(resource_name), html: {class: "form-signin"}) do |f| %>
|
3
|
-
<h2 class="form-signin-heading">
|
3
|
+
<h2 class="form-signin-heading">APIQ</h2>
|
4
4
|
<%= f.email_field :email, autofocus: true, class: 'form-control', placeholder: Kms::User.human_attribute_name(:email), required: '' %>
|
5
5
|
<%= f.password_field :password, autocomplete: "off", class: 'form-control', placeholder: Kms::User.human_attribute_name(:password), required: '' %>
|
6
6
|
<% if devise_mapping.rememberable? -%>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<meta charset="UTF-8">
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
6
6
|
|
7
|
-
<title>{{ '
|
7
|
+
<title>{{ 'APIQ - ' + ($state.current.views['header'] || $state.current.views['header@']).template || 'APIQ' }}</title>
|
8
8
|
<%= stylesheet_link_tag 'kms/application', media: 'all', 'data-turbolinks-track' => true %>
|
9
9
|
<script type="text/javascript">
|
10
10
|
var CKEDITOR_BASEPATH = '/assets/ng-ckeditor/libs/ckeditor/';
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
</head>
|
20
20
|
<body>
|
21
|
-
<div id="page-wrapper" ng-controller="SidebarController" ng-class="{'
|
21
|
+
<div id="page-wrapper" ng-controller="SidebarController" ng-class="{'open': toggle}" ng-cloak>
|
22
22
|
|
23
23
|
<!-- Sidebar -->
|
24
24
|
|
@@ -26,7 +26,43 @@
|
|
26
26
|
<ul class="sidebar">
|
27
27
|
<li class="sidebar-main">
|
28
28
|
<a href="#" ng-click="toggleSidebar()">
|
29
|
-
|
29
|
+
<svg
|
30
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
31
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
32
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
33
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
34
|
+
xmlns="http://www.w3.org/2000/svg"
|
35
|
+
viewBox="0 0 1250 1250"
|
36
|
+
height="70"
|
37
|
+
width="70"
|
38
|
+
xml:space="preserve"
|
39
|
+
version="1.1"
|
40
|
+
preserveAspectRation="none"
|
41
|
+
id="svg2" class="logo"><metadata
|
42
|
+
id="metadata8"><rdf:RDF><cc:Work
|
43
|
+
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
44
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
45
|
+
id="defs6"><clipPath
|
46
|
+
id="clipPath16"
|
47
|
+
clipPathUnits="userSpaceOnUse"><path
|
48
|
+
id="path18"
|
49
|
+
d="m 0,1000 1000,0 L 1000,0 0,0 0,1000 Z" /></clipPath></defs><g
|
50
|
+
transform="matrix(1.25,0,0,-1.25,0,1250)"
|
51
|
+
id="g10"><g
|
52
|
+
id="g12"><g
|
53
|
+
clip-path="url(#clipPath16)"
|
54
|
+
id="g14"><g
|
55
|
+
transform="translate(448.853,608.1104)"
|
56
|
+
id="g20"><path
|
57
|
+
id="path22"
|
58
|
+
style="fill:#ff5274;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
59
|
+
d="m 0,0 48.851,25.155 c 1.443,0.743 3.157,0.743 4.601,-0.001 L 102.295,0 c 3.633,-1.87 3.632,-7.063 0,-8.933 L 53.447,-34.088 c -1.443,-0.743 -3.157,-0.743 -4.6,0 L 0,-8.934 C -3.632,-7.063 -3.632,-1.871 0,0" /></g><g
|
60
|
+
transform="translate(512.4707,338.8955)"
|
61
|
+
id="g24"><path
|
62
|
+
id="path26"
|
63
|
+
style="fill:#ff5274;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
64
|
+
d="m 0,0 c -7.808,-4.021 -17.133,-4.021 -24.94,0 l -240.019,123.607 62.093,31.978 161.765,-83.31 c 8.965,-4.617 18.798,-6.925 28.633,-6.925 9.832,0 19.666,2.308 28.626,6.925 L 177.926,155.585 240.02,123.607 0,0 Z m -138.643,226.155 36.404,-18.748 61.138,-31.487 c 8.965,-4.617 18.798,-6.926 28.633,-6.926 9.832,0 19.666,2.309 28.626,6.926 l 61.144,31.487 36.405,18.746 62.091,-31.975 -36.405,-18.749 -139.394,-71.784 c -7.808,-4.033 -17.13,-4.021 -24.941,0 l -139.389,71.784 -36.405,18.749 62.093,31.977 z m 112.084,95.218 1.622,0.835 c 7.807,4.025 17.129,4.014 24.94,0 L 1.626,321.372 111.576,264.748 77.3,247.097 75.171,246 38.766,227.252 -0.001,207.289 c -7.808,-4.026 -17.13,-4.015 -24.941,0 l -38.763,19.963 -36.403,18.747 -2.132,1.098 -34.275,17.651 109.956,56.625 z m 297.835,-174.174 -56.722,29.213 c 4.34,4.79 6.883,11.046 6.883,17.766 0,9.975 -5.507,19.015 -14.382,23.592 l -56.722,29.211 c 4.342,4.792 6.886,11.049 6.886,17.767 0,9.976 -5.51,19.015 -14.386,23.592 l -126.67,65.236 c -17.929,9.235 -39.337,9.24 -57.26,0 l -126.674,-65.236 -0.007,0 c -8.869,-4.577 -14.38,-13.616 -14.38,-23.592 0,-6.718 2.545,-12.975 6.889,-17.767 l -56.722,-29.211 -0.006,0 c -8.87,-4.571 -14.382,-13.611 -14.382,-23.592 0,-6.72 2.543,-12.975 6.883,-17.765 l -56.726,-29.214 c -8.868,-4.577 -14.379,-13.616 -14.379,-23.592 0,-9.975 5.511,-19.015 14.387,-23.592 L -41.098,-31.369 c 8.965,-4.617 18.795,-6.926 28.629,-6.926 9.832,0 19.665,2.309 28.627,6.926 l 255.126,131.39 c 8.867,4.571 14.375,13.611 14.375,23.586 0,9.976 -5.508,19.015 -14.383,23.592" /></g></g></g></g></svg>
|
65
|
+
APIQ
|
30
66
|
<span class="menu-icon glyphicon glyphicon-transfer"></span>
|
31
67
|
</a>
|
32
68
|
</li>
|
@@ -37,8 +73,8 @@
|
|
37
73
|
<% resources.each do |resource_class, tab_icon_class| %>
|
38
74
|
<% if can? :index, resource_class %>
|
39
75
|
<li class="sidebar-list">
|
40
|
-
<a ui-sref="<%= defined?(Kms::Model) && resource_class.is_a?(Kms::Model) ? "models.entries({modelId: #{resource_class.name}})" : resource_class.name.demodulize.tableize %>">
|
41
|
-
<%= resource_class.model_name.human(count: 1.1) %>
|
76
|
+
<a ui-sref="<%= defined?(Kms::Model) && resource_class.is_a?(Kms::Model) ? "models.entries({modelId: #{resource_class.name}})" : resource_class.name.demodulize.tableize %>" title="<%= resource_class.model_name.human(count: 1.1) %>">
|
77
|
+
<%= truncate(resource_class.model_name.human(count: 1.1), length: 22) %>
|
42
78
|
<span class="menu-icon fa <%= tab_icon_class %>"></span>
|
43
79
|
</a>
|
44
80
|
</li>
|
@@ -47,23 +83,16 @@
|
|
47
83
|
<% end %>
|
48
84
|
</ul>
|
49
85
|
<div class="sidebar-footer">
|
50
|
-
<div class="col-xs-
|
51
|
-
<a href="
|
52
|
-
|
86
|
+
<div class="col-xs-6">
|
87
|
+
<a href="mailto:hello@apiq.io">
|
88
|
+
<%= t(:need_help) %>
|
53
89
|
</a>
|
54
90
|
</div>
|
55
|
-
<div class="col-xs-
|
91
|
+
<div class="col-xs-6">
|
56
92
|
<a ui-sref="help">
|
57
|
-
<%= t(:
|
93
|
+
<%= t(:documentation) %>
|
58
94
|
</a>
|
59
95
|
</div>
|
60
|
-
<!--
|
61
|
-
<div class="col-xs-4">
|
62
|
-
<a href="#">
|
63
|
-
Support
|
64
|
-
</a>
|
65
|
-
</div>
|
66
|
-
-->
|
67
96
|
</div>
|
68
97
|
</div>
|
69
98
|
|
@@ -79,7 +108,7 @@
|
|
79
108
|
<div class="user pull-right">
|
80
109
|
<div class="item dropdown">
|
81
110
|
<a href="#" class="dropdown-toggle">
|
82
|
-
|
111
|
+
<%= image_tag "avatar.jpg" %>
|
83
112
|
</a>
|
84
113
|
<ul class="dropdown-menu dropdown-menu-right">
|
85
114
|
<li class="dropdown-header">
|
@@ -1,42 +1,16 @@
|
|
1
|
-
include ActionView::Helpers::TextHelper
|
2
1
|
Kms::ExternalsRegistry.register(:request) {|request, controller| Liquor::Rails::Request.new(request, controller) }
|
3
2
|
Kms::ExternalsRegistry.register(:index) {|_,_| Kms::Page.find_by_slug!("index").to_drop }
|
4
3
|
Kms::ExternalsRegistry.register(:page) do |request,_|
|
5
|
-
|
6
|
-
|
7
|
-
page_path = request.params[:path] || ''
|
8
|
-
parent_page_path = File.dirname(page_path)
|
9
|
-
parent_page_path = Kms::Page::INDEX_FULLPATH if parent_page_path == "."
|
10
|
-
parent_page = Kms::Page.published.find_by_fullpath!(parent_page_path)
|
11
|
-
templatable_pages = parent_page.children.where(templatable: true)
|
12
|
-
page = templatable_pages.detect do |templatable_page|
|
13
|
-
templatable_page.fetch_item!(File.basename(page_path))
|
14
|
-
end
|
15
|
-
end
|
16
|
-
page ? page.to_drop : raise(ActiveRecord::RecordNotFound)
|
4
|
+
page_fetcher = Kms::PageFetcher.new(request.params[:path] || Kms::Page::INDEX_FULLPATH)
|
5
|
+
page_fetcher.fetch!
|
17
6
|
end
|
18
7
|
Kms::ExternalsRegistry.register(:item) do |request,controller|
|
19
8
|
page = Kms::ExternalsRegistry.externals[:page].call(request, controller)
|
20
9
|
if page && page.source.templatable?
|
21
|
-
page.source.fetch_item
|
10
|
+
page.source.fetch_item(File.basename(request.params[:path])).try(:to_drop)
|
22
11
|
end
|
23
12
|
end
|
24
|
-
Kms::ExternalsRegistry.register(:search) do |request,
|
25
|
-
|
26
|
-
|
27
|
-
key_words = request.params[:query].split(' ')
|
28
|
-
results_ids = Kms::Page.published.advanced_search(key_words.join('|')).map(&:id)
|
29
|
-
results = Kms::Page.published.where('id IN (?)', results_ids).map {|page| Kms::SearchItem.new(title: highlight(page.title, key_words, highlighter: '<span class="highlight">\1</span>'), link: page.fullpath, content: highlight(page.content, key_words, highlighter: '<span class="highlight">\1</span>'))}
|
30
|
-
|
31
|
-
Kms::SearchService.resources.each do |resource|
|
32
|
-
resource_ids = resource.advanced_search(request.params[:query].split(' ').join('|')).map(&:id)
|
33
|
-
resource_items = resource.where('id IN (?)', resource_ids)
|
34
|
-
parent_page = Kms::Page.published.find_by_templatable_type(resource)
|
35
|
-
resource_items.each do |item|
|
36
|
-
results << Kms::SearchItem.new(title: highlight(item.title, key_words, highlighter: '<span class="highlight">\1</span>'), link: parent_page.parent.fullpath + '/' + item.slug, content: highlight(item.content, key_words, highlighter: '<span class="highlight">\1</span>'))
|
37
|
-
end if parent_page && parent_page.templatable
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
results
|
13
|
+
Kms::ExternalsRegistry.register(:search) do |request,_|
|
14
|
+
search_service = Kms::SearchService.new(request.params[:query])
|
15
|
+
search_service.search
|
42
16
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Kms::SearchService.register(Kms::Page, {title: :title, link: :fullpath, content: :content})
|
data/config/locales/en.yml
CHANGED
@@ -6,10 +6,12 @@ en:
|
|
6
6
|
remember_me: "Remember me"
|
7
7
|
content_management: "Content management"
|
8
8
|
add_template: "Add template"
|
9
|
+
create_first_template: "Create first template"
|
9
10
|
new_template: "New Template"
|
10
11
|
edit_template: "Edit Template"
|
11
12
|
update_template: "Update template"
|
12
13
|
add_page: "Add page"
|
14
|
+
create_first_page: "Create first page"
|
13
15
|
new_page: "New Page"
|
14
16
|
edit_page: "Edit Page"
|
15
17
|
update_page: "Update page"
|
@@ -26,10 +28,12 @@ en:
|
|
26
28
|
new_user: "New User"
|
27
29
|
toggle_fullscreen_mode_instruction: "Press F11 when cursor is in the editor to toggle full screen editing. ESC can also be used to exit full screen editing."
|
28
30
|
add_snippet: "Add snippet"
|
31
|
+
create_first_snippet: "Create first snippet"
|
29
32
|
new_snippet: "New Snippet"
|
30
33
|
edit_snippet: "Edit Snippet"
|
31
34
|
update_snippet: "Update snippet"
|
32
|
-
|
35
|
+
documentation: "Documentation"
|
36
|
+
need_help: "Need help?"
|
33
37
|
settings: "Settings"
|
34
38
|
update_settings: "Update settings"
|
35
39
|
no_settings: "No settings specified"
|
@@ -42,6 +46,12 @@ en:
|
|
42
46
|
javascripts: "Javascript"
|
43
47
|
fonts: "Fonts"
|
44
48
|
other_assets: "Other"
|
49
|
+
templates_description: "Templates are where your common HTML code should be placed"
|
50
|
+
pages_description: "Pages represent your website hierarchy and their content embeds in Templates"
|
51
|
+
no_templates_yet: "Looks like you don't have templates yet"
|
52
|
+
snippets_description: "Snippets are pieces of HTML that you could include in templates or pages"
|
53
|
+
assets_description: "Upload stylesheets, javascripts, images and other files here (you can even pick multiple)"
|
54
|
+
assets_drop_description: "or just drag and drop them"
|
45
55
|
roles:
|
46
56
|
admin: "Admin"
|
47
57
|
content_manager: "Content manager"
|
@@ -150,6 +160,12 @@ en:
|
|
150
160
|
currency:
|
151
161
|
main_description: 'Formats currency values. Possible options: precision, delimiter, separator, format, unit:'
|
152
162
|
activerecord:
|
163
|
+
errors:
|
164
|
+
models:
|
165
|
+
kms/page:
|
166
|
+
attributes:
|
167
|
+
template:
|
168
|
+
required: "can't be blank"
|
153
169
|
models:
|
154
170
|
kms/template:
|
155
171
|
one: "Template"
|
data/config/locales/ru.yml
CHANGED
@@ -6,10 +6,12 @@ ru:
|
|
6
6
|
remember_me: "Запомнить меня"
|
7
7
|
content_management: "Управление контентом"
|
8
8
|
add_template: "Добавить шаблон"
|
9
|
+
create_first_template: "Создать первый шаблон"
|
9
10
|
new_template: "Новый Шаблон"
|
10
11
|
edit_template: "Редактирование Шаблона"
|
11
12
|
update_template: "Обновить шаблон"
|
12
13
|
add_page: "Добавить страницу"
|
14
|
+
create_first_page: "Создать первую страницу"
|
13
15
|
new_page: "Новая Страница"
|
14
16
|
edit_page: "Редактирование Страницы"
|
15
17
|
update_page: "Обновить страницу"
|
@@ -26,10 +28,12 @@ ru:
|
|
26
28
|
new_user: "Новый Пользователь"
|
27
29
|
toggle_fullscreen_mode_instruction: "Используйте F11 для включения/выключения полноэкранного редактирования, когда курсор находится внутри поля. Также можно использовать ESC для выхода из этого режима."
|
28
30
|
add_snippet: "Добавить сниппет"
|
31
|
+
create_first_snippet: "Создать первый сниппет"
|
29
32
|
new_snippet: "Новый Сниппет"
|
30
33
|
edit_snippet: "Редактирование Сниппета"
|
31
34
|
update_snippet: "Обновить сниппет"
|
32
|
-
|
35
|
+
documentation: "Документация"
|
36
|
+
need_help: "Нужна помощь?"
|
33
37
|
settings: "Настройки"
|
34
38
|
update_settings: "Обновить настройки"
|
35
39
|
no_settings: "Нет настроек для отображения"
|
@@ -42,6 +46,12 @@ ru:
|
|
42
46
|
javascripts: "Javascript"
|
43
47
|
fonts: "Шрифты"
|
44
48
|
other_assets: "Другое"
|
49
|
+
templates_description: "В Шаблонах размещается общий для всего сайта HTML код"
|
50
|
+
pages_description: "Страницы представляют структуру сайта и их содержимое встраивается в Шаблоны"
|
51
|
+
no_templates_yet: "Кажется у вас ещё нет ни одного шаблона"
|
52
|
+
snippets_description: "Сниппеты это части HTML кода (например, 'Меню' или 'Галерея'), которые могут включаться в Страницы или Шаблоны"
|
53
|
+
assets_description: "Здесь можно загрузить файлы CSS, Javascript, изображений и другие файлы (возможна загрузка сразу нескольких)"
|
54
|
+
assets_drop_description: "или просто перетащить их мышкой"
|
45
55
|
roles:
|
46
56
|
admin: "Администратор"
|
47
57
|
content_manager: "Контент-менеджер"
|
@@ -150,6 +160,12 @@ ru:
|
|
150
160
|
currency:
|
151
161
|
main_description: 'Форматирование полей, хранящих денежные значения. Возможные опции - precision, delimiter, separator, format, unit:'
|
152
162
|
activerecord:
|
163
|
+
errors:
|
164
|
+
models:
|
165
|
+
kms/page:
|
166
|
+
attributes:
|
167
|
+
template:
|
168
|
+
required: 'не может быть пустым'
|
153
169
|
models:
|
154
170
|
kms/template:
|
155
171
|
one: "Шаблон"
|