lanes 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +1 -1
- data/Rakefile +0 -42
- data/client/{javascripts/component → lanes/components}/Base.coffee +10 -10
- data/client/{javascripts/component → lanes/components}/ChoicesInput.coffee +0 -0
- data/client/lanes/components/enabled.js.erb +3 -0
- data/client/{javascripts/lib/create-namespace.js → lanes/components/enabled.scss.erb} +0 -0
- data/client/{javascripts/component → lanes/components}/grid/Editor.coffee +10 -13
- data/client/{javascripts/component → lanes/components/grid}/Grid.coffee +6 -6
- data/client/{javascripts/component → lanes/components}/grid/PopOverEditor.coffee +3 -3
- data/client/{javascripts/component → lanes/components}/grid/RowEditor.coffee +2 -3
- data/client/lanes/components/grid/config.json +3 -0
- data/client/{stylesheets/compoonents/grid-editors.scss → lanes/components/grid/editors.scss} +0 -0
- data/client/{stylesheets/compoonents → lanes/components/grid}/grid.scss +8 -6
- data/client/lanes/components/grid/index.js +8 -0
- data/client/{javascripts/component → lanes/components}/grid/popover-editor.html +0 -0
- data/client/{javascripts/component → lanes/components}/grid/row-editor.html +0 -0
- data/client/{javascripts/component/grid.html → lanes/components/grid/template.html} +0 -0
- data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/dataTables.bootstrap.js +0 -0
- data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/dataTables.scroller.js +0 -0
- data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/datatables.responsive.js +0 -0
- data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/index.js +0 -0
- data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/jquery.dataTables.js +1 -0
- data/client/lanes/components/index.js +2 -0
- data/client/lanes/components/modal/ModalDialog.coffee +47 -0
- data/client/lanes/components/modal/index.js +2 -0
- data/client/lanes/components/modal/modal.scss +20 -0
- data/client/{javascripts/component/modal.html → lanes/components/modal/template.html} +5 -4
- data/client/{javascripts/component → lanes/components/popover}/PopOver.coffee +4 -4
- data/client/lanes/components/popover/index.js +2 -0
- data/client/lanes/components/popover/popover.scss +1 -0
- data/client/{javascripts/component/popover.html → lanes/components/popover/template.html} +0 -0
- data/client/{javascripts/component → lanes/components/radio_group}/RadioGroup.coffee +1 -1
- data/client/{javascripts/component → lanes/components/record_finder}/RecordFinder.coffee +4 -4
- data/client/{javascripts/component/record-finder → lanes/components/record_finder}/clause.skr +0 -0
- data/client/{javascripts/component/record-finder → lanes/components/record_finder}/dialog.skr +0 -0
- data/client/{javascripts/component/record-finder → lanes/components/record_finder}/field.skr +0 -0
- data/client/lanes/components/select_field/SelectField.coffee +87 -0
- data/client/{screens/user-management → lanes/components/select_field}/index.js +0 -1
- data/client/{javascripts/workspace/tab.html → lanes/components/select_field/select_field.scss} +0 -0
- data/client/{javascripts → lanes}/data/Bootstrap.coffee +0 -0
- data/client/{javascripts → lanes}/data/ChangeSet.coffee +0 -0
- data/client/{javascripts → lanes}/data/Collection.coffee +37 -6
- data/client/{javascripts → lanes}/data/Config.coffee +0 -0
- data/client/{javascripts → lanes}/data/Model.coffee +8 -9
- data/client/{javascripts → lanes}/data/PubSub.coffee +0 -0
- data/client/{javascripts → lanes}/data/Query.coffee +0 -0
- data/client/{javascripts → lanes}/data/Screens.coffee +48 -19
- data/client/{javascripts → lanes}/data/Sync.coffee +5 -5
- data/client/lanes/data/User.coffee +46 -0
- data/client/{javascripts → lanes}/data/index.js +1 -2
- data/client/{javascripts → lanes}/data/mixins/HasCodeField.coffee +1 -1
- data/client/{javascripts → lanes}/extension/Base.coffee +1 -1
- data/client/lanes/extension/EarlyExtensions.js.erb +3 -0
- data/client/{javascripts → lanes}/extension/Extensions.coffee +5 -0
- data/client/{javascripts → lanes}/extension/GlAccounts.coffee +0 -0
- data/client/lanes/extension/LateLoaded.js.erb +3 -0
- data/client/lanes/extension/index.js +5 -0
- data/client/lanes/extension/namespace-available.js.erb +3 -0
- data/client/lanes/index.js +11 -0
- data/client/{javascripts → lanes}/lib/MakeBaseClass.coffee +0 -0
- data/client/{javascripts → lanes}/lib/ModuleSupport.coffee +0 -0
- data/client/{javascripts → lanes}/lib/Templates.coffee +2 -5
- data/{spec/client/foo_spec.js → client/lanes/lib/create-namespace.js} +0 -0
- data/client/{javascripts → lanes}/lib/debounce.coffee +0 -0
- data/client/{javascripts → lanes}/lib/defer.coffee +0 -0
- data/client/{javascripts → lanes}/lib/el.js +0 -0
- data/client/{javascripts → lanes}/lib/index.js +0 -4
- data/client/{javascripts → lanes}/lib/loader.coffee +15 -10
- data/client/{javascripts → lanes}/lib/namespace.coffee +3 -0
- data/client/{javascripts → lanes}/lib/noConflict.coffee +1 -0
- data/client/{javascripts → lanes}/lib/promise_helpers.coffee +0 -0
- data/client/{javascripts → lanes}/lib/results.coffee +0 -0
- data/client/{javascripts → lanes}/lib/utilFunctions.coffee +11 -13
- data/client/{javascripts → lanes}/plugins/ResizeSensor.js +0 -0
- data/client/lanes/plugins/index.js +1 -0
- data/client/{javascripts → lanes}/plugins/overlay.coffee +0 -0
- data/client/{javascripts → lanes}/plugins/trigger.coffee +0 -0
- data/client/lanes/screens/Base.coffee +40 -0
- data/client/{javascripts/view/mixins/ScreenChangeListener.coffee → lanes/screens/ChangeListener.coffee} +2 -2
- data/client/lanes/screens/Router.coffee +6 -0
- data/client/lanes/screens/index.js +1 -0
- data/client/{javascripts/view → lanes/screens}/screen-definitions.js.erb +0 -0
- data/client/{javascripts → lanes}/vendor/bootstrap/affix.js +43 -23
- data/client/{javascripts → lanes}/vendor/bootstrap/alert.js +6 -4
- data/client/{javascripts → lanes}/vendor/bootstrap/button.js +16 -10
- data/client/{javascripts → lanes}/vendor/bootstrap/carousel.js +27 -10
- data/client/{javascripts → lanes}/vendor/bootstrap/collapse.js +69 -28
- data/client/{javascripts → lanes}/vendor/bootstrap/dropdown.js +20 -10
- data/client/{javascripts → lanes}/vendor/bootstrap/modal.js +67 -23
- data/client/{javascripts → lanes}/vendor/bootstrap/popover.js +13 -7
- data/client/{javascripts → lanes}/vendor/bootstrap/scrollspy.js +12 -7
- data/client/{javascripts → lanes}/vendor/bootstrap/tab.js +41 -16
- data/client/{javascripts → lanes}/vendor/bootstrap/tooltip.js +60 -39
- data/client/{javascripts → lanes}/vendor/bootstrap/transition.js +1 -1
- data/client/{javascripts → lanes}/vendor/jquery-2.js +0 -0
- data/client/{javascripts → lanes}/vendor/jquery.tap.js +0 -0
- data/client/{javascripts → lanes}/vendor/magicsuggest.js +0 -0
- data/client/{javascripts → lanes}/vendor/message-bus.js +0 -0
- data/client/lanes/vendor/modern-stack.js +27 -0
- data/client/lanes/vendor/packaged.js +13698 -0
- data/client/{javascripts/view → lanes/views}/Assets.coffee +1 -1
- data/client/lanes/views/Base.coffee +426 -0
- data/client/{javascripts/view → lanes/views}/FormBindings.coffee +1 -1
- data/client/{javascripts/view → lanes/views}/Functions.coffee +1 -1
- data/client/{javascripts/view → lanes/views}/Helpers.coffee +6 -6
- data/client/{javascripts/view → lanes/views}/Keys.coffee +3 -3
- data/client/{javascripts/view → lanes/views}/ModelObserver.coffee +1 -1
- data/client/{javascripts/view → lanes/views}/ModelUpdate.coffee +2 -2
- data/client/{javascripts/view → lanes/views}/PubSub.coffee +3 -3
- data/client/{javascripts/view → lanes/views}/RenderContext.coffee +1 -1
- data/client/{javascripts/view → lanes/views}/SaveNotify.coffee +2 -2
- data/client/{javascripts/view → lanes/views}/TimedHighlight.coffee +1 -1
- data/client/{javascripts/view → lanes/views}/TimedMask.coffee +1 -1
- data/client/{javascripts/view/InterfaceState.coffee → lanes/views/Viewport.coffee} +18 -18
- data/client/{javascripts/view → lanes/views}/_button.html +0 -0
- data/client/{javascripts/view → lanes/views}/_toolbar.html +0 -0
- data/client/lanes/views/index.js +2 -0
- data/client/{javascripts/view → lanes/views}/model-update.html +0 -0
- data/client/{javascripts → lanes}/workspace/ActiveScreensSwitcher.coffee +23 -27
- data/client/{javascripts → lanes}/workspace/Instance.es6 +25 -21
- data/client/{javascripts → lanes}/workspace/Layout.coffee +6 -5
- data/client/{javascripts → lanes}/workspace/Navbar.coffee +2 -2
- data/client/{javascripts → lanes}/workspace/Pages.coffee +9 -13
- data/client/{javascripts → lanes}/workspace/ScreensMenu.coffee +11 -11
- data/client/{javascripts → lanes}/workspace/index.js +7 -5
- data/client/{javascripts → lanes}/workspace/layout.html +0 -0
- data/client/{javascripts → lanes}/workspace/menu.html +0 -0
- data/client/{javascripts → lanes}/workspace/menu_toggle.html +0 -0
- data/client/{javascripts → lanes}/workspace/navbar.html +0 -0
- data/client/{javascripts → lanes}/workspace/pages.html +0 -0
- data/client/{javascripts → lanes}/workspace/screens-menu.html +0 -0
- data/client/{javascripts → lanes}/workspace/screens-switcher.html +0 -0
- data/client/lanes/workspace/tab.html +0 -0
- data/client/lanes/workspace.scss.erb +21 -0
- data/client/{javascripts/lanes-complete.js → lanes-complete.js} +0 -0
- data/client/lanes-workspace.scss.erb +21 -0
- data/client/{stylesheets/compoonents → styles/components}/all.scss +0 -0
- data/client/{stylesheets/compoonents → styles/components}/changes-notification.scss +0 -0
- data/client/{stylesheets/compoonents → styles/components}/record-finder.scss +0 -0
- data/client/{stylesheets/compoonents → styles/components}/suggest.scss +0 -0
- data/client/{stylesheets → styles}/fonts/icomoon.eot +0 -0
- data/client/{stylesheets → styles}/fonts/icomoon.svg +0 -0
- data/client/{stylesheets → styles}/fonts/icomoon.ttf +0 -0
- data/client/{stylesheets → styles}/fonts/icomoon.woff +0 -0
- data/client/{stylesheets → styles}/fonts/selection.json +0 -0
- data/client/{stylesheets/fonts/style.css → styles/fonts/style.scss} +0 -0
- data/client/{stylesheets → styles}/fonts.scss +6 -6
- data/client/{stylesheets → styles}/forms.scss +0 -0
- data/client/{stylesheets → styles}/index.css +0 -0
- data/client/{stylesheets → styles}/keybindings.scss +0 -0
- data/client/{stylesheets → styles}/layout.scss +1 -1
- data/client/{stylesheets → styles}/plugins/all.scss +0 -0
- data/client/{stylesheets → styles}/plugins/overlay.scss +1 -1
- data/client/{stylesheets → styles}/plugins/resize-sensor.scss +0 -0
- data/client/{stylesheets → styles}/screens.scss +0 -0
- data/client/{stylesheets → styles}/tabs.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_alerts.scss +0 -0
- data/client/styles/vendor/bootstrap/_badges.scss +63 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_breadcrumbs.scss +0 -0
- data/client/styles/vendor/bootstrap/_button-groups.scss +243 -0
- data/client/styles/vendor/bootstrap/_buttons.scss +160 -0
- data/client/styles/vendor/bootstrap/_carousel.scss +267 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_close.scss +0 -0
- data/client/styles/vendor/bootstrap/_code.scss +69 -0
- data/client/styles/vendor/bootstrap/_component-animations.scss +38 -0
- data/client/styles/vendor/bootstrap/_dropdowns.scss +213 -0
- data/client/styles/vendor/bootstrap/_forms.scss +548 -0
- data/client/styles/vendor/bootstrap/_glyphicons.scss +234 -0
- data/client/styles/vendor/bootstrap/_grid.scss +84 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_input-groups.scss +0 -0
- data/client/styles/vendor/bootstrap/_jumbotron.scss +49 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_labels.scss +0 -0
- data/client/styles/vendor/bootstrap/_list-group.scss +124 -0
- data/client/styles/vendor/bootstrap/_media.scss +47 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_mixins.scss +0 -0
- data/client/styles/vendor/bootstrap/_modals.scss +148 -0
- data/client/styles/vendor/bootstrap/_navbar.scss +662 -0
- data/client/styles/vendor/bootstrap/_navs.scss +244 -0
- data/client/styles/vendor/bootstrap/_normalize.scss +427 -0
- data/client/styles/vendor/bootstrap/_pager.scss +54 -0
- data/client/styles/vendor/bootstrap/_pagination.scss +88 -0
- data/client/styles/vendor/bootstrap/_panels.scss +261 -0
- data/client/styles/vendor/bootstrap/_popovers.scss +135 -0
- data/client/styles/vendor/bootstrap/_print.scss +107 -0
- data/client/styles/vendor/bootstrap/_progress-bars.scss +87 -0
- data/client/styles/vendor/bootstrap/_responsive-embed.scss +35 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_responsive-utilities.scss +0 -0
- data/client/styles/vendor/bootstrap/_scaffolding.scss +150 -0
- data/client/styles/vendor/bootstrap/_tables.scss +234 -0
- data/client/styles/vendor/bootstrap/_theme.scss +272 -0
- data/client/styles/vendor/bootstrap/_thumbnails.scss +38 -0
- data/client/styles/vendor/bootstrap/_tooltip.scss +103 -0
- data/client/styles/vendor/bootstrap/_type.scss +298 -0
- data/client/styles/vendor/bootstrap/_utilities.scss +56 -0
- data/client/styles/vendor/bootstrap/_variables.scss +864 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_wells.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_alerts.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_background-variant.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_border-radius.scss +0 -0
- data/client/styles/vendor/bootstrap/mixins/_buttons.scss +52 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_center-block.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_clearfix.scss +0 -0
- data/client/styles/vendor/bootstrap/mixins/_forms.scss +88 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_gradients.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_grid-framework.scss +0 -0
- data/client/styles/vendor/bootstrap/mixins/_grid.scss +122 -0
- data/client/styles/vendor/bootstrap/mixins/_hide-text.scss +21 -0
- data/client/styles/vendor/bootstrap/mixins/_image.scss +33 -0
- data/client/styles/vendor/bootstrap/mixins/_labels.scss +12 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_list-group.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_nav-divider.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_nav-vertical-align.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_opacity.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_pagination.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_panels.scss +0 -0
- data/client/styles/vendor/bootstrap/mixins/_progress-bar.scss +10 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_reset-filter.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_resize.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_responsive-visibility.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_size.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_tab-focus.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_table-row.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_text-emphasis.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_text-overflow.scss +0 -0
- data/client/styles/vendor/bootstrap/mixins/_vendor-prefixes.scss +222 -0
- data/client/styles/vendor/bootstrap/old/_alerts.scss +68 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_badges.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_breadcrumbs.scss +26 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_button-groups.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_buttons.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_carousel.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_close.scss +35 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_code.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_component-animations.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_dropdowns.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_forms.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_glyphicons.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_grid.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_input-groups.scss +166 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_jumbotron.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_labels.scss +66 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_list-group.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_media.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_mixins.scss +39 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_modals.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_navbar.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_navs.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_normalize.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_pager.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_pagination.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_panels.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_popovers.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_print.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_progress-bars.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_responsive-embed.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_responsive-utilities.scss +174 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_scaffolding.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_tables.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_theme.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_thumbnails.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_tooltip.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_type.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_utilities.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_variables.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_wells.scss +29 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/bootstrap.scss +0 -0
- data/client/styles/vendor/bootstrap/old/mixins/_alerts.scss +14 -0
- data/client/styles/vendor/bootstrap/old/mixins/_background-variant.scss +11 -0
- data/client/styles/vendor/bootstrap/old/mixins/_border-radius.scss +18 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_buttons.scss +0 -0
- data/client/styles/vendor/bootstrap/old/mixins/_center-block.scss +7 -0
- data/client/styles/vendor/bootstrap/old/mixins/_clearfix.scss +22 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_forms.scss +0 -0
- data/client/styles/vendor/bootstrap/old/mixins/_gradients.scss +58 -0
- data/client/styles/vendor/bootstrap/old/mixins/_grid-framework.scss +81 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_grid.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_hide-text.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_image.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_labels.scss +0 -0
- data/client/styles/vendor/bootstrap/old/mixins/_list-group.scss +31 -0
- data/client/styles/vendor/bootstrap/old/mixins/_nav-divider.scss +10 -0
- data/client/styles/vendor/bootstrap/old/mixins/_nav-vertical-align.scss +9 -0
- data/client/styles/vendor/bootstrap/old/mixins/_opacity.scss +8 -0
- data/client/styles/vendor/bootstrap/old/mixins/_pagination.scss +23 -0
- data/client/styles/vendor/bootstrap/old/mixins/_panels.scss +24 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_progress-bar.scss +0 -0
- data/client/styles/vendor/bootstrap/old/mixins/_reset-filter.scss +8 -0
- data/client/styles/vendor/bootstrap/old/mixins/_resize.scss +6 -0
- data/client/styles/vendor/bootstrap/old/mixins/_responsive-visibility.scss +21 -0
- data/client/styles/vendor/bootstrap/old/mixins/_size.scss +10 -0
- data/client/styles/vendor/bootstrap/old/mixins/_tab-focus.scss +9 -0
- data/client/styles/vendor/bootstrap/old/mixins/_table-row.scss +28 -0
- data/client/styles/vendor/bootstrap/old/mixins/_text-emphasis.scss +11 -0
- data/client/styles/vendor/bootstrap/old/mixins/_text-overflow.scss +8 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_vendor-prefixes.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap-custom-grid.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap-custom-modals.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap.scss +14 -9
- data/client/{stylesheets → styles}/vendor/dataTables.scss +0 -0
- data/lanes.gemspec +5 -1
- data/lib/lanes/api/controller.rb +47 -6
- data/lib/lanes/api/helper_methods.rb +2 -10
- data/lib/lanes/api/javascript_processor.rb +17 -7
- data/lib/lanes/api/null_authentication_provider.rb +33 -0
- data/lib/lanes/api/request_wrapper.rb +49 -28
- data/lib/lanes/api/root.rb +12 -30
- data/lib/lanes/api/routing.rb +37 -0
- data/lib/lanes/api/sprockets_compressor.rb +35 -0
- data/lib/lanes/api/sprockets_extension.rb +69 -0
- data/lib/lanes/api/test_specs.rb +13 -9
- data/lib/lanes/api.rb +2 -18
- data/lib/lanes/cli.rb +22 -2
- data/lib/lanes/command/app.rb +49 -0
- data/lib/lanes/command/client_model_update.rb +65 -0
- data/lib/lanes/command/console.rb +20 -0
- data/lib/lanes/command/db.rb +33 -0
- data/lib/lanes/command/db.usage +1 -0
- data/lib/lanes/command/generate.rb +21 -0
- data/lib/lanes/command/generate_model.rb +105 -0
- data/lib/lanes/command/generate_model.usage +45 -0
- data/lib/lanes/command/generate_screen.rb +31 -0
- data/lib/lanes/command/generate_screen.usage +11 -0
- data/lib/lanes/command/generate_view.rb +22 -0
- data/lib/lanes/command/generate_view.usage +13 -0
- data/lib/lanes/command/model_attribute.rb +188 -0
- data/lib/lanes/command/named_command.rb +27 -0
- data/lib/lanes/command/server.rb +19 -0
- data/lib/lanes/command/server.usage +3 -0
- data/lib/lanes/command/templates/Gemfile +10 -0
- data/lib/lanes/{generators/app → command/templates}/Guardfile +0 -0
- data/lib/lanes/command/templates/Rakefile +2 -0
- data/lib/lanes/command/templates/client/Extension.coffee +5 -0
- data/lib/lanes/command/templates/client/components/.gitkeep +0 -0
- data/lib/lanes/command/templates/client/components/Component.coffee +1 -0
- data/lib/lanes/command/templates/client/data/Model.coffee +24 -0
- data/lib/lanes/command/templates/client/namespace-extension.js +17 -0
- data/lib/lanes/command/templates/client/screens/Screen.coffee +9 -0
- data/lib/lanes/command/templates/client/screens/index.js +5 -0
- data/lib/lanes/command/templates/client/screens/layout.html +3 -0
- data/lib/lanes/command/templates/client/screens/styles.scss +9 -0
- data/lib/lanes/command/templates/client/styles/styles.scss +1 -0
- data/lib/lanes/command/templates/client/views/.gitkeep +0 -0
- data/lib/lanes/command/templates/client/views/View.coffee +9 -0
- data/lib/lanes/command/templates/client/views/template.html +3 -0
- data/lib/lanes/{generators/app → command/templates}/config/database.yml +0 -0
- data/lib/lanes/command/templates/config/lanes.rb +7 -0
- data/lib/lanes/command/templates/config/routes.rb +2 -0
- data/lib/lanes/{generators/app → command/templates}/config.ru +1 -0
- data/lib/lanes/command/templates/db/create_table_migration.rb +19 -0
- data/lib/lanes/command/templates/gitignore +1 -0
- data/lib/lanes/command/templates/lib/namespace/extension.rb +13 -0
- data/lib/lanes/command/templates/lib/namespace/model.rb +7 -0
- data/lib/lanes/command/templates/lib/namespace/screen.rb +17 -0
- data/lib/lanes/command/templates/lib/namespace/version.rb +3 -0
- data/lib/lanes/command/templates/lib/namespace.rb +12 -0
- data/lib/lanes/command/templates/spec/client/data/ModelSpec.coffee +5 -0
- data/lib/lanes/command/templates/spec/client/views/ViewSpec.coffee +5 -0
- data/lib/lanes/command/templates/spec/fixtures/namespace/model.yml +16 -0
- data/lib/lanes/command/templates/spec/namespace/model_spec.rb +10 -0
- data/lib/lanes/command/templates/spec/spec_helper.rb +15 -0
- data/lib/lanes/command/update.rb +13 -0
- data/lib/lanes/command/update_model.rb +125 -0
- data/lib/lanes/command/update_model.usage +2 -0
- data/lib/lanes/command.rb +37 -0
- data/lib/lanes/components.rb +45 -0
- data/lib/lanes/concerns/set_attribute_data.rb +2 -2
- data/lib/lanes/configuration.rb +3 -3
- data/lib/lanes/db.rb +5 -39
- data/lib/lanes/extension.rb +64 -19
- data/lib/lanes/guard_tasks.rb +7 -5
- data/lib/lanes/rake_tasks.rb +47 -0
- data/lib/lanes/screens.rb +1 -48
- data/{spec → lib/lanes}/spec_helper.rb +0 -0
- data/lib/lanes/version.rb +1 -1
- data/lib/lanes.rb +1 -3
- data/npm-build/compile.coffee +1 -1
- data/npm-build/package.json +5 -5
- data/npm-build/template.js +13 -13
- data/spec/api/javascript_processor_spec.rb +1 -1
- data/spec/client/view/BaseSpec.coffee +166 -0
- data/spec/helpers/jasmine-jquery.js +813 -0
- data/spec/helpers/jasmine-matchers.js +1586 -0
- data/tasks/migrations.rake +1 -1
- data/views/index.erb +9 -13
- metadata +419 -268
- data/client/javascripts/component/ModalDialog.coffee +0 -44
- data/client/javascripts/component/SelectField.coffee +0 -43
- data/client/javascripts/component/TaggedField.coffee +0 -27
- data/client/javascripts/component/index.js +0 -5
- data/client/javascripts/data/Roles.coffee +0 -91
- data/client/javascripts/data/User.coffee +0 -70
- data/client/javascripts/extension/index.js +0 -6
- data/client/javascripts/extension/load.js.erb +0 -3
- data/client/javascripts/lanes-workspace.js +0 -1
- data/client/javascripts/lib/underscore.inflection.js +0 -210
- data/client/javascripts/plugins/index.js +0 -4
- data/client/javascripts/vendor/modern-stack.js +0 -14
- data/client/javascripts/vendor/packaged.js +0 -13769
- data/client/javascripts/view/Base.coffee +0 -231
- data/client/javascripts/view/Screen.coffee +0 -30
- data/client/javascripts/view/index.js +0 -10
- data/client/javascripts/workspace/LoginDialog.coffee +0 -33
- data/client/javascripts/workspace/login-dialog.html +0 -16
- data/client/screens/user-management/UserEditScreen.coffee +0 -21
- data/client/screens/user-management/UserManagement.coffee +0 -24
- data/client/screens/user-management/grid-popover-editor.html +0 -33
- data/client/screens/user-management/index.css +0 -4
- data/client/screens/user-management/user-management-styles.scss +0 -7
- data/client/screens/user-management/user-management.html +0 -8
- data/client/stylesheets/compoonents/modal-dialog.scss +0 -23
- data/client/stylesheets/lanes-workspace.scss +0 -17
- data/config/puma.rb +0 -7
- data/db/seed.rb +0 -37
- data/foo/Gemfile +0 -5
- data/foo/Guardfile +0 -13
- data/foo/foo/Gemfile +0 -5
- data/foo/foo/lib/foo.rb +0 -7
- data/foo/lib/foo/version.rb +0 -3
- data/foo/lib/foo.rb +0 -8
- data/lib/lanes/access/locked_fields.rb +0 -43
- data/lib/lanes/access/role.rb +0 -58
- data/lib/lanes/access/role_collection.rb +0 -75
- data/lib/lanes/access/roles/administrator.rb +0 -25
- data/lib/lanes/access/roles/support.rb +0 -13
- data/lib/lanes/access/user_maint_screen.rb +0 -32
- data/lib/lanes/access.rb +0 -50
- data/lib/lanes/api/asset_pipeline.rb +0 -59
- data/lib/lanes/api/authentication_helper.rb +0 -21
- data/lib/lanes/api/authentication_provider.rb +0 -45
- data/lib/lanes/api/default_routes.rb +0 -35
- data/lib/lanes/api/skr_templates.rb +0 -60
- data/lib/lanes/concerns/track_modifications.rb +0 -51
- data/lib/lanes/db/seed.rb +0 -27
- data/lib/lanes/generators/app/Gemfile +0 -5
- data/lib/lanes/generators/app/Rakefile +0 -9
- data/lib/lanes/generators/app/lib/main_class/version.rb +0 -3
- data/lib/lanes/generators/app/lib/main_class.rb +0 -8
- data/lib/lanes/generators/app.rb +0 -36
- data/lib/lanes/user.rb +0 -127
- data/spec/client/component/ChoicesInputSpec.coffee +0 -12
- data/spec/client/component/foo_spec.coffee +0 -4
- data/spec/client/support/jasmine.yml +0 -128
- data/spec/client/support/jasmine_helper.rb +0 -15
- data/spec/helpers/SpecHelper.js +0 -18
@@ -1,75 +0,0 @@
|
|
1
|
-
module Lanes
|
2
|
-
module Access
|
3
|
-
|
4
|
-
class RoleCollection
|
5
|
-
include Enumerable
|
6
|
-
|
7
|
-
def initialize(user)
|
8
|
-
@roles ||= user.role_names.map{ |name|
|
9
|
-
"Lanes::Access::Roles::#{name.classify}".safe_constantize
|
10
|
-
}.compact.map{ |klass| klass.new(user) }
|
11
|
-
end
|
12
|
-
|
13
|
-
def exposed_data
|
14
|
-
@roles.map{ |role| role.class.to_s.demodulize.downcase }
|
15
|
-
end
|
16
|
-
|
17
|
-
# @param model [Lanes::Model]
|
18
|
-
# @param attribute [Symbol]
|
19
|
-
# @return [Boolean] Can the User view the model?
|
20
|
-
def can_read?(model, attribute = nil)
|
21
|
-
klass=model_to_class(model)
|
22
|
-
test_access(klass, attribute, :read){ |role| role.can_read?(klass) }
|
23
|
-
end
|
24
|
-
|
25
|
-
# @param model [Lanes::Model]
|
26
|
-
# @param attribute [Symbol]
|
27
|
-
# @return [Boolean] Can the User create and update the model?
|
28
|
-
def can_write?(model, attribute = nil)
|
29
|
-
klass=model_to_class(model)
|
30
|
-
test_access(klass, attribute, :write){ |role| role.can_write?(klass) }
|
31
|
-
end
|
32
|
-
|
33
|
-
# @param model [Lanes::Model]
|
34
|
-
# @param id [Fixnum] the id of the record to remove
|
35
|
-
# @return [Boolean] Can the User delete the model?
|
36
|
-
def can_delete?(model,id)
|
37
|
-
klass=model_to_class(model)
|
38
|
-
@roles.each{ |role| role.can_delete?(klass) }
|
39
|
-
end
|
40
|
-
|
41
|
-
# @return [Array<symbol>] list of roles
|
42
|
-
def to_sym
|
43
|
-
@roles.map{ |r| r.class.to_s.demodulize.downcase.to_sym }
|
44
|
-
end
|
45
|
-
|
46
|
-
def each
|
47
|
-
@roles.each{|r| yield r}
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def model_to_class(model)
|
53
|
-
model.is_a?(Class) ? model : model.class
|
54
|
-
end
|
55
|
-
|
56
|
-
# Test if the given roles grant access to the model
|
57
|
-
def test_access(model, attribute, access_type)
|
58
|
-
# Check if the attribute is locked
|
59
|
-
# If it is, the locks determine access, otherwise use the model's grants
|
60
|
-
roles = LockedFields.roles_needed_for(model, attribute, access_type)
|
61
|
-
if roles.empty?
|
62
|
-
return !!@roles.detect { |role| yield role }.present?
|
63
|
-
else
|
64
|
-
!!roles.find { |role| @roles.map(&:class).include?(role) }
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
|
74
|
-
require_relative "roles/support"
|
75
|
-
require_relative "roles/administrator"
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Lanes
|
2
|
-
module Access
|
3
|
-
|
4
|
-
module Roles
|
5
|
-
|
6
|
-
class Administrator < Role
|
7
|
-
|
8
|
-
def self.grant_global_access!
|
9
|
-
|
10
|
-
self.grant( *Lanes::Model.descendants )
|
11
|
-
|
12
|
-
LockedFields.definitions.each do | klass, fields |
|
13
|
-
fields.each do |field, grants|
|
14
|
-
grants.push({ role: self, only: nil })
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
lock User, :password_digest
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'pathname'
|
2
|
-
|
3
|
-
module Lanes
|
4
|
-
module Access
|
5
|
-
|
6
|
-
class WorkspaceScreen < Workspace::ScreenDefinition
|
7
|
-
|
8
|
-
def specification
|
9
|
-
{
|
10
|
-
id: 'users-management',
|
11
|
-
title: 'Users',
|
12
|
-
description: 'Create and maintain Users',
|
13
|
-
icon: 'icon-user',
|
14
|
-
group_id: 'customers',
|
15
|
-
view: 'UserManagement',
|
16
|
-
model: 'User'
|
17
|
-
}
|
18
|
-
end
|
19
|
-
|
20
|
-
def asset_path
|
21
|
-
Pathname.new(__FILE__).dirname.join("../../../js/screen").realpath
|
22
|
-
end
|
23
|
-
|
24
|
-
def asset_file_names
|
25
|
-
[ 'lanes/access/users-management.js' ]
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
data/lib/lanes/access.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
module Lanes
|
2
|
-
|
3
|
-
module Access
|
4
|
-
|
5
|
-
class << self
|
6
|
-
|
7
|
-
def _type_to_str(klass)
|
8
|
-
klass.to_s.demodulize.underscore
|
9
|
-
end
|
10
|
-
|
11
|
-
def for_user( user )
|
12
|
-
{
|
13
|
-
:roles => user.roles.map{ | role |
|
14
|
-
{
|
15
|
-
type: _type_to_str(role.class),
|
16
|
-
read: role.read.map{ |klass| _type_to_str(klass) },
|
17
|
-
write: role.write.map{ |klass| _type_to_str(klass) },
|
18
|
-
delete: role.delete.map{ |klass| _type_to_str(klass) }
|
19
|
-
}
|
20
|
-
},
|
21
|
-
:locked_fields => LockedFields.definitions.map{ | klass, locks |
|
22
|
-
{
|
23
|
-
type: _type_to_str(klass),
|
24
|
-
locks: locks.each_with_object({}) do |(field, grants), result|
|
25
|
-
result[field] = grants.map do |grant|
|
26
|
-
{ role: _type_to_str(grant[:role]), only: grant[:only] }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
}
|
30
|
-
}
|
31
|
-
}
|
32
|
-
end
|
33
|
-
|
34
|
-
def calculate_model_access!
|
35
|
-
Roles::Administrator.grant_global_access!
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
require_relative 'access/locked_fields'
|
45
|
-
require_relative 'access/role'
|
46
|
-
require_relative 'access/role_collection'
|
47
|
-
|
48
|
-
Lanes::Access.calculate_model_access!
|
49
|
-
# require_relative 'access/user_maint_screen'
|
50
|
-
# require_relative 'access/workspace_extension'
|
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'sprockets'
|
2
|
-
require 'sass'
|
3
|
-
require 'sass-css-importer'
|
4
|
-
require 'sinatra/sprockets-helpers'
|
5
|
-
require_relative 'javascript_processor'
|
6
|
-
|
7
|
-
module Lanes
|
8
|
-
module API
|
9
|
-
module AssetPipeline
|
10
|
-
|
11
|
-
def self.configure(env)
|
12
|
-
root = Pathname.new(__FILE__).dirname.join("../../..")
|
13
|
-
Lanes.config.get(:environment) do
|
14
|
-
if Lanes.env.development?
|
15
|
-
env.cache = Sprockets::Cache::FileStore.new(root.join('tmp','cache'))
|
16
|
-
end
|
17
|
-
end
|
18
|
-
env.append_path root.join('client', 'javascripts')
|
19
|
-
env.append_path root.join('client', 'stylesheets')
|
20
|
-
env.append_path root.join('client', 'screens')
|
21
|
-
env.append_path root.join('client', 'images')
|
22
|
-
|
23
|
-
JsAssetCompiler.register(env)
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.registered(app)
|
27
|
-
app.register Sinatra::Sprockets::Helpers
|
28
|
-
|
29
|
-
app.set :sprockets, Sprockets::Environment.new
|
30
|
-
configure(app.sprockets)
|
31
|
-
|
32
|
-
# The url for client
|
33
|
-
app.set :assets_prefix, '/assets'
|
34
|
-
|
35
|
-
app.set :digest_assets, false
|
36
|
-
|
37
|
-
app.configure do
|
38
|
-
|
39
|
-
Sprockets::Helpers.configure do |config|
|
40
|
-
config.environment = app.sprockets
|
41
|
-
config.prefix = app.assets_prefix
|
42
|
-
config.digest = app.digest_assets
|
43
|
-
config.public_path = app.public_folder
|
44
|
-
config.debug = true
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
app.configure :test, :development do
|
49
|
-
app.get "#{app.assets_prefix}/*" do |path|
|
50
|
-
env_sprockets = request.env.dup
|
51
|
-
env_sprockets['PATH_INFO'] = path
|
52
|
-
settings.sprockets.call env_sprockets
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Lanes
|
2
|
-
module API
|
3
|
-
module AuthenticationHelper
|
4
|
-
def authenticate!(model, type)
|
5
|
-
authentication = Lanes::API.config.authentication_provider.new(environment:env, params:params)
|
6
|
-
unless authentication.allowed_access_to?(model, type)
|
7
|
-
error!({ errors: {user: "Access Denied"}, message: @authentication.error_message }, 401)
|
8
|
-
end
|
9
|
-
@authentication
|
10
|
-
end
|
11
|
-
|
12
|
-
def authentication
|
13
|
-
@authentication
|
14
|
-
end
|
15
|
-
|
16
|
-
def session
|
17
|
-
env['rack.session']
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module Lanes
|
2
|
-
module API
|
3
|
-
class AuthenticationProvider
|
4
|
-
|
5
|
-
def initialize(session:nil, params:nil, request_type: type)
|
6
|
-
@session = session
|
7
|
-
@params = params
|
8
|
-
@request_type = request_type
|
9
|
-
end
|
10
|
-
|
11
|
-
def current_user
|
12
|
-
@current_user ||= Lanes::User.where(id: @session[:user_id]).first
|
13
|
-
end
|
14
|
-
|
15
|
-
def error_message
|
16
|
-
current_user ? "User not found" : error_message_for_access
|
17
|
-
end
|
18
|
-
|
19
|
-
def error_message_for_access
|
20
|
-
return "Unable to " + case @request_type
|
21
|
-
when 'GET' then "read"
|
22
|
-
when 'POST','PATCH','PUT' then "write"
|
23
|
-
when 'DELETE' then "delete"
|
24
|
-
else
|
25
|
-
"perform action"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def allowed_access_to?(klass)
|
30
|
-
return false if current_user.nil?
|
31
|
-
case @request_type
|
32
|
-
when 'GET'
|
33
|
-
klass.can_read_attributes?(@params,current_user)
|
34
|
-
when 'POST','PATCH','PUT'
|
35
|
-
klass.can_write_attributes?(@params,current_user)
|
36
|
-
when 'DELETE'
|
37
|
-
klass.can_delete_attributes?(@params,current_user)
|
38
|
-
else
|
39
|
-
false
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module Lanes
|
2
|
-
module API
|
3
|
-
|
4
|
-
Root.get '/' do
|
5
|
-
content_type 'text/html'
|
6
|
-
erb :index
|
7
|
-
end
|
8
|
-
|
9
|
-
Root.get "default-records" do
|
10
|
-
{ success: true, data: Lanes::API.default_records }
|
11
|
-
end
|
12
|
-
|
13
|
-
Root.post "/user-session.json" do
|
14
|
-
wrap_json_reply do
|
15
|
-
user = User.where(login: data['login']).first
|
16
|
-
if user && user.authenticate(data['password'])
|
17
|
-
session[:user_id] = user.id
|
18
|
-
{ success: true, message: "Login succeeded", data: user.workspace_data }
|
19
|
-
else
|
20
|
-
{ success: false, message: "Login failed", errors: { login: 'failed' }, data: {} }
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
Root.delete "/user-session.json" do
|
26
|
-
session.destroy
|
27
|
-
{ success: true, message: "Logout succeeded", data: {} }
|
28
|
-
end
|
29
|
-
|
30
|
-
Root.build_route User
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
end
|
35
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
# Stockor templates compiler
|
2
|
-
#
|
3
|
-
# This is a hacked together version of Sam Stephenson's Eco
|
4
|
-
# project for embedded coffeescript templates.
|
5
|
-
#
|
6
|
-
# Our version has the various helper functions pre-loaded
|
7
|
-
# so the templates themselves are smaller in size.
|
8
|
-
# and also includes a "h" helper namespace
|
9
|
-
|
10
|
-
require 'pathname'
|
11
|
-
require 'tilt'
|
12
|
-
module Skr
|
13
|
-
module Workspace
|
14
|
-
|
15
|
-
module EJSSource
|
16
|
-
class << self
|
17
|
-
def path
|
18
|
-
@path ||= Pathname.new(__FILE__).dirname.join('eco.js')
|
19
|
-
end
|
20
|
-
|
21
|
-
def contents
|
22
|
-
@contents ||= path.read
|
23
|
-
end
|
24
|
-
|
25
|
-
def combined_contents
|
26
|
-
[CoffeeScript::Source.contents, contents].join(";\n")
|
27
|
-
end
|
28
|
-
|
29
|
-
def context
|
30
|
-
@context ||= ExecJS.compile(combined_contents)
|
31
|
-
end
|
32
|
-
|
33
|
-
def compile(template)
|
34
|
-
template = template.read if template.respond_to?(:read)
|
35
|
-
context.call("eco.precompile", template, 'Skr.TemplateWrapper','Skr.View.Helpers')
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
class SkrTemplates < Tilt::Template
|
43
|
-
|
44
|
-
self.default_mime_type = 'application/javascript'
|
45
|
-
|
46
|
-
def evaluate(scope, locals, &block)
|
47
|
-
"Skr.Templates['#{scope.logical_path}']=" + EJSSource.compile(data)
|
48
|
-
end
|
49
|
-
|
50
|
-
def prepare;
|
51
|
-
# NOOP
|
52
|
-
end
|
53
|
-
|
54
|
-
def self.register(app)
|
55
|
-
app.assets.register_engine(".skr", self )
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
class Lanes::User
|
2
|
-
end
|
3
|
-
|
4
|
-
module Lanes::Concerns
|
5
|
-
|
6
|
-
# Extends Rails updated_by and created_by timestamps to also track who created and updated the model.
|
7
|
-
# It reads the current user's id from User.current_id when saving and updating the record
|
8
|
-
# The class_name for the created_by and updated_by is set to {Lanes::Configuration#user_model}
|
9
|
-
module TrackModifications
|
10
|
-
extend ActiveSupport::Concern
|
11
|
-
|
12
|
-
included do
|
13
|
-
class_attribute :record_modifications, :instance_writer=>false
|
14
|
-
self.record_modifications = true
|
15
|
-
|
16
|
-
belongs_to :created_by, :class_name=>Lanes::User
|
17
|
-
belongs_to :updated_by, :class_name=>Lanes::User
|
18
|
-
|
19
|
-
self.blacklist_attributes :created_at, :updated_at, :created_by_id, :updated_by_id
|
20
|
-
before_update :record_update_modifications
|
21
|
-
before_create :record_create_modifications
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def _record_user_to_column( column )
|
27
|
-
user_id = Lanes::User.current_id ? Lanes::User.current_id : 0
|
28
|
-
write_attribute( column, user_id ) if self.class.column_names.include?( column )
|
29
|
-
end
|
30
|
-
|
31
|
-
def record_create_modifications
|
32
|
-
if self.record_modifications
|
33
|
-
_record_user_to_column('updated_by_id')
|
34
|
-
_record_user_to_column('created_by_id')
|
35
|
-
end
|
36
|
-
true
|
37
|
-
end
|
38
|
-
|
39
|
-
def record_update_modifications
|
40
|
-
if self.record_modifications && should_record_timestamps?
|
41
|
-
_record_user_to_column('updated_by_id')
|
42
|
-
end
|
43
|
-
true
|
44
|
-
end
|
45
|
-
|
46
|
-
def change_tracking_fields
|
47
|
-
%w{updated_by_id created_by_id updated_at created_at}
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
data/lib/lanes/db/seed.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'pathname'
|
2
|
-
require 'yaml'
|
3
|
-
|
4
|
-
module Lanes
|
5
|
-
module DB
|
6
|
-
|
7
|
-
class Seed
|
8
|
-
|
9
|
-
@@seeds = []
|
10
|
-
|
11
|
-
class << self
|
12
|
-
|
13
|
-
def add(&block)
|
14
|
-
@@seeds.push(block)
|
15
|
-
end
|
16
|
-
|
17
|
-
# Loads the database with seed models
|
18
|
-
def execute!
|
19
|
-
@@seeds.each(&:call)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
data/lib/lanes/generators/app.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
module Lanes
|
2
|
-
module Generators
|
3
|
-
|
4
|
-
class App < Thor::Group
|
5
|
-
include Thor::Actions
|
6
|
-
|
7
|
-
class_options :force => :boolean
|
8
|
-
|
9
|
-
class_option :test_framework, :type => :string
|
10
|
-
class_option :directory, :type=>:string
|
11
|
-
|
12
|
-
argument :name
|
13
|
-
|
14
|
-
def self.source_root
|
15
|
-
Pathname.new(__FILE__).dirname.join("app")
|
16
|
-
end
|
17
|
-
|
18
|
-
def initialize(*args)
|
19
|
-
super
|
20
|
-
self.destination_root = options[:directory] || name
|
21
|
-
end
|
22
|
-
|
23
|
-
def create_files
|
24
|
-
template "Gemfile"
|
25
|
-
template "Rakefile"
|
26
|
-
template "Guardfile"
|
27
|
-
template "config.ru"
|
28
|
-
template "config/database.yml"
|
29
|
-
template "lib/main_class.rb", "lib/#{name}.rb"
|
30
|
-
template "lib/main_class/version.rb", "lib/#{name}/version.rb"
|
31
|
-
empty_directory "tmp"
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|