red_base 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +339 -0
- data/README.rdoc +40 -0
- data/Rakefile +42 -0
- data/app/assets/fonts/DroidNaskh-Bold.ttf +0 -0
- data/app/assets/fonts/DroidNaskh-Regular.ttf +0 -0
- data/app/assets/fonts/OpenSans-Bold.ttf +0 -0
- data/app/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
- data/app/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
- data/app/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- data/app/assets/fonts/OpenSans-Italic.ttf +0 -0
- data/app/assets/fonts/OpenSans-Light.ttf +0 -0
- data/app/assets/fonts/OpenSans-LightItalic.ttf +0 -0
- data/app/assets/fonts/OpenSans-Regular.ttf +0 -0
- data/app/assets/fonts/OpenSans-Semibold.ttf +0 -0
- data/app/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- data/app/assets/javascripts/red_base/application.js +20 -0
- data/app/assets/javascripts/red_base/dashboard/angular.js +9 -0
- data/app/assets/javascripts/red_base/dashboard/app.js +65 -0
- data/app/assets/javascripts/red_base/dashboard/application.js.erb +24 -0
- data/app/assets/javascripts/red_base/dashboard/functions.js.erb +91 -0
- data/app/assets/javascripts/red_base/dashboard/init.js +38 -0
- data/app/assets/javascripts/red_base/dashboard/init.js~ +0 -0
- data/app/assets/javascripts/red_base/dashboard/lib/angular-animate.js +1226 -0
- data/app/assets/javascripts/red_base/dashboard/lib/angular-gettext.js +202 -0
- data/app/assets/javascripts/red_base/dashboard/lib/angular-resource.js +578 -0
- data/app/assets/javascripts/red_base/dashboard/lib/angular-route.js +880 -0
- data/app/assets/javascripts/red_base/dashboard/lib/angular.js +20031 -0
- data/app/assets/javascripts/red_base/dashboard/lib/lodash.underscore.js +4893 -0
- data/app/assets/javascripts/red_base/dashboard/lib/restangular.js +1066 -0
- data/app/assets/javascripts/red_base/dashboard/locale/translations.js +5 -0
- data/app/assets/javascripts/red_base/dashboard/modules/anim.js +32 -0
- data/app/assets/javascripts/red_base/dashboard/modules/api.js +32 -0
- data/app/assets/javascripts/red_base/dashboard/modules/auth/auth.js +34 -0
- data/app/assets/javascripts/red_base/dashboard/modules/auth/group.js +174 -0
- data/app/assets/javascripts/red_base/dashboard/modules/auth/user.js +122 -0
- data/app/assets/javascripts/red_base/dashboard/modules/list-view.js +293 -0
- data/app/assets/javascripts/red_base/dashboard/modules/logs.js +41 -0
- data/app/assets/javascripts/red_base/dashboard/modules/modules.js +50 -0
- data/app/assets/javascripts/red_base/dashboard/modules/nav.js.erb +92 -0
- data/app/assets/javascripts/red_base/dashboard/templates/application.handlebars.erb +42 -0
- data/app/assets/javascripts/red_base/dashboard/templates/auth/groups/details.handlebars.erb +15 -0
- data/app/assets/javascripts/red_base/dashboard/templates/auth/groups/index.handlebars.erb +7 -0
- data/app/assets/javascripts/red_base/dashboard/templates/auth/groups/new.handlebars.erb +39 -0
- data/app/assets/javascripts/red_base/dashboard/templates/auth/index.handlebars.erb +31 -0
- data/app/assets/javascripts/red_base/dashboard/templates/auth/users/details.handlebars.erb +15 -0
- data/app/assets/javascripts/red_base/dashboard/templates/auth/users/index.handlebars.erb +11 -0
- data/app/assets/javascripts/red_base/dashboard/templates/auth/users/new.handlebars.erb +33 -0
- data/app/assets/javascripts/red_base/dashboard/templates/components/list-view.handlebars.erb +59 -0
- data/app/assets/javascripts/red_base/dashboard/templates/components/model-form.handlebars.erb +3 -0
- data/app/assets/javascripts/red_base/dashboard/templates/modules.handlebars.erb +15 -0
- data/app/assets/javascripts/red_base/dashboard/templates/navigation.handlebars.erb +43 -0
- data/app/assets/javascripts/red_base/dashboard/templates/widgets.handlebars +23 -0
- data/app/assets/javascripts/red_base/dashboard/variables.js.erb +17 -0
- data/app/assets/javascripts/red_base/groups.js +2 -0
- data/app/assets/javascripts/red_base/home.js +2 -0
- data/app/assets/javascripts/red_base/i18n.js +13 -0
- data/app/assets/javascripts/red_base/locale/en.json +27 -0
- data/app/assets/javascripts/red_base/locale/fa.json +27 -0
- data/app/assets/javascripts/red_base/users.js +2 -0
- data/app/assets/stylesheets/red_base/base.css.scss +402 -0
- data/app/assets/stylesheets/red_base/dashboard/dashboard.css.scss +169 -0
- data/app/assets/stylesheets/red_base/dashboard/ltr/application.css +21 -0
- data/app/assets/stylesheets/red_base/dashboard/ltr/base.css.scss.erb +28 -0
- data/app/assets/stylesheets/red_base/dashboard/ltr/base.css.scss~ +15 -0
- data/app/assets/stylesheets/red_base/dashboard/ltr/buttons.css.scss.erb +48 -0
- data/app/assets/stylesheets/red_base/dashboard/ltr/direction.css.scss +38 -0
- data/app/assets/stylesheets/red_base/dashboard/ltr/foundation_and_overrides.css.scss +1014 -0
- data/app/assets/stylesheets/red_base/dashboard/rtl/application.css +21 -0
- data/app/assets/stylesheets/red_base/dashboard/rtl/base.css.scss.erb +31 -0
- data/app/assets/stylesheets/red_base/dashboard/rtl/base.css.scss~ +1 -0
- data/app/assets/stylesheets/red_base/dashboard/rtl/base.css_flymake.scss +25 -0
- data/app/assets/stylesheets/red_base/dashboard/rtl/buttons.css.scss.erb +45 -0
- data/app/assets/stylesheets/red_base/dashboard/rtl/direction.css.scss +37 -0
- data/app/assets/stylesheets/red_base/dashboard/rtl/foundation_and_overrides.css.scss +1014 -0
- data/app/assets/stylesheets/red_base/dashboard/sidebar.css.scss +93 -0
- data/app/assets/stylesheets/red_base/devise.css.scss +34 -0
- data/app/assets/stylesheets/red_base/groups.css +4 -0
- data/app/assets/stylesheets/red_base/home.css.scss +14 -0
- data/app/assets/stylesheets/red_base/ltr/application.css +20 -0
- data/app/assets/stylesheets/red_base/ltr/buttons.css.scss.erb +48 -0
- data/app/assets/stylesheets/red_base/ltr/foundation_and_overrides.scss.erb +1012 -0
- data/app/assets/stylesheets/red_base/mixins.css.scss +15 -0
- data/app/assets/stylesheets/red_base/mixins.css.scss~ +7 -0
- data/app/assets/stylesheets/red_base/rtl/application.css +20 -0
- data/app/assets/stylesheets/red_base/rtl/buttons.css.scss.erb +48 -0
- data/app/assets/stylesheets/red_base/rtl/foundation_and_overrides.scss.erb +1012 -0
- data/app/assets/stylesheets/red_base/users.css +4 -0
- data/app/assets/stylesheets/red_base/variables.css.scss +100 -0
- data/app/controllers/red_base/api/v1/groups_controller.rb +65 -0
- data/app/controllers/red_base/api/v1/logs_controller.rb +12 -0
- data/app/controllers/red_base/api/v1/permissions_controller.rb +17 -0
- data/app/controllers/red_base/api/v1/users_controller.rb +54 -0
- data/app/controllers/red_base/api_controller.rb +51 -0
- data/app/controllers/red_base/application_controller.rb +34 -0
- data/app/controllers/red_base/dashboard_controller.rb +40 -0
- data/app/controllers/red_base/home_controller.rb +19 -0
- data/app/controllers/red_base/omniauth/callbacks_controller.rb +43 -0
- data/app/controllers/red_base/users/omniauth_callbacks_controller.rb~ +2 -0
- data/app/helpers/red_base/application_helper.rb +4 -0
- data/app/helpers/red_base/dashboard_helper.rb +5 -0
- data/app/helpers/red_base/groups_helper.rb +4 -0
- data/app/helpers/red_base/home_helper.rb +4 -0
- data/app/helpers/red_base/users_helper.rb +4 -0
- data/app/models/ability.rb +39 -0
- data/app/models/red_base/group.rb +27 -0
- data/app/models/red_base/permission.rb +15 -0
- data/app/models/red_base/user.rb +77 -0
- data/app/views/angularjs_templates/auth/groups/details.html +21 -0
- data/app/views/angularjs_templates/auth/groups/index.html +5 -0
- data/app/views/angularjs_templates/auth/groups/new.html +40 -0
- data/app/views/angularjs_templates/auth/index.html +30 -0
- data/app/views/angularjs_templates/auth/users/details.html +28 -0
- data/app/views/angularjs_templates/auth/users/index.html +6 -0
- data/app/views/angularjs_templates/auth/users/new.html +45 -0
- data/app/views/angularjs_templates/index.html +8 -0
- data/app/views/angularjs_templates/list-view/index.html +66 -0
- data/app/views/angularjs_templates/locale/fa.po +25 -0
- data/app/views/angularjs_templates/locale/templates.pot +24 -0
- data/app/views/angularjs_templates/logs/index.html +6 -0
- data/app/views/angularjs_templates/modules.html +17 -0
- data/app/views/angularjs_templates/nav.html.erb +38 -0
- data/app/views/angularjs_templates/nav.html.erb~ +43 -0
- data/app/views/devise/confirmations/new.html.erb +34 -0
- data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
- data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/devise/passwords/edit.html.erb +44 -0
- data/app/views/devise/passwords/new.html.erb +32 -0
- data/app/views/devise/registrations/edit.html.erb +29 -0
- data/app/views/devise/registrations/new.html.erb +91 -0
- data/app/views/devise/sessions/new.html.erb +98 -0
- data/app/views/devise/shared/_links.erb +25 -0
- data/app/views/devise/unlocks/new.html.erb +30 -0
- data/app/views/layouts/red_base/application.html.erb +90 -0
- data/app/views/layouts/red_base/dashboard.html.erb +21 -0
- data/app/views/red_base/api/v1/groups/create.json.jbuilder +4 -0
- data/app/views/red_base/api/v1/groups/destroy.html.erb +2 -0
- data/app/views/red_base/api/v1/groups/destroy.json.jbuilder +1 -0
- data/app/views/red_base/api/v1/groups/edit.html.erb +2 -0
- data/app/views/red_base/api/v1/groups/index.html.erb +2 -0
- data/app/views/red_base/api/v1/groups/index.json.jbuilder +6 -0
- data/app/views/red_base/api/v1/groups/new.html.erb +2 -0
- data/app/views/red_base/api/v1/groups/show.html.erb +2 -0
- data/app/views/red_base/api/v1/groups/show.json.jbuilder +5 -0
- data/app/views/red_base/api/v1/groups/update.json.jbuilder +4 -0
- data/app/views/red_base/api/v1/logs/index.json.jbuilder +1 -0
- data/app/views/red_base/api/v1/permissions/index.json.jbuilder +1 -0
- data/app/views/red_base/api/v1/users/create.html.erb +2 -0
- data/app/views/red_base/api/v1/users/create.json.jbuilder +1 -0
- data/app/views/red_base/api/v1/users/destroy.json.jbuilder +1 -0
- data/app/views/red_base/api/v1/users/distroy.html.erb +2 -0
- data/app/views/red_base/api/v1/users/edit.html.erb +2 -0
- data/app/views/red_base/api/v1/users/index.html.erb +2 -0
- data/app/views/red_base/api/v1/users/index.json.jbuilder +4 -0
- data/app/views/red_base/api/v1/users/show.html.erb +2 -0
- data/app/views/red_base/api/v1/users/show.json.jbuilder +2 -0
- data/app/views/red_base/api/v1/users/update.json.jbuilder +1 -0
- data/app/views/red_base/dashboard/index.html.erb +37 -0
- data/app/views/red_base/home/index.html.erb +119 -0
- data/config/initializers/devise.rb +28 -0
- data/config/locales/devise.en.yml +59 -0
- data/config/locales/devise.fa.yml +56 -0
- data/config/locales/fa/LC_MESSAGES/red_base.mo +0 -0
- data/config/locales/fa/messages.mo +0 -0
- data/config/locales/fa/red_base.po +181 -0
- data/config/locales/red_base.pot +181 -0
- data/config/routes.rb +33 -0
- data/db/migrate/20131013091000_devise_create_red_base_users.rb +64 -0
- data/db/migrate/20131020124701_create_red_base_groups.rb +9 -0
- data/db/migrate/20131021170923_create_red_base_permissions.rb +10 -0
- data/db/migrate/20131123120422_add_permissions_groups_table.rb +8 -0
- data/db/seeds.rb +15 -0
- data/lib/devise_patch.rb~ +5 -0
- data/lib/generators/red_base/USAGE +8 -0
- data/lib/generators/red_base/angularjs_resource_generator.rb +74 -0
- data/lib/generators/red_base/install_all_generator.rb +38 -0
- data/lib/generators/red_base/install_generator.rb +42 -0
- data/lib/generators/red_base/install_specs_generator.rb +48 -0
- data/lib/generators/red_base/js_scaffold_generator.rb +232 -0
- data/lib/generators/red_base/templates/README +41 -0
- data/lib/generators/red_base/templates/README~ +4 -0
- data/lib/generators/red_base/templates/SPECS +13 -0
- data/lib/generators/red_base/templates/angularjs/details.html.erb +20 -0
- data/lib/generators/red_base/templates/angularjs/details.html.erb~ +0 -0
- data/lib/generators/red_base/templates/angularjs/index.html.erb +59 -0
- data/lib/generators/red_base/templates/angularjs/module.js.erb +259 -0
- data/lib/generators/red_base/templates/angularjs/new.html.erb +43 -0
- data/lib/generators/red_base/templates/api/controller.rb.erb +54 -0
- data/lib/generators/red_base/templates/api/controller.rb.erb~ +37 -0
- data/lib/generators/red_base/templates/devise.rb +251 -0
- data/lib/generators/red_base/templates/devise.rb~ +238 -0
- data/lib/generators/red_base/templates/fast_gettext.rb +4 -0
- data/lib/generators/red_base/templates/features/api.feature +92 -0
- data/lib/generators/red_base/templates/features/api.step.rb +7 -0
- data/lib/generators/red_base/templates/features/step_definitions/email_steps.rb +206 -0
- data/lib/generators/red_base/templates/features/support/email_spec.rb +1 -0
- data/lib/generators/red_base/templates/features/support/env.rb +79 -0
- data/lib/generators/red_base/templates/formtastic.rb +76 -0
- data/lib/generators/red_base/templates/js_scaffold.README +25 -0
- data/lib/generators/red_base/templates/red_base.rb +14 -0
- data/lib/generators/red_base/templates/red_base.rb~ +251 -0
- data/lib/generators/red_base/templates/seeds.rb +1 -0
- data/lib/generators/red_base/templates/spec/factories/groups.rb +5 -0
- data/lib/generators/red_base/templates/spec/factories/users.rb +10 -0
- data/lib/generators/red_base/templates/spec/spec_helper.rb +69 -0
- data/lib/generators/red_base/templates/spec/support/devise.rb +3 -0
- data/lib/generators/red_base/templates/views/create.json.jbuilder.erb +2 -0
- data/lib/generators/red_base/templates/views/destroy.json.jbuilder.erb +1 -0
- data/lib/generators/red_base/templates/views/index.json.jbuilder.erb +10 -0
- data/lib/generators/red_base/templates/views/index.json.jbuilder.erb~ +0 -0
- data/lib/generators/red_base/templates/views/show.json.jbuilder.erb +6 -0
- data/lib/generators/red_base/templates/views/update.json.jbuilder.erb +6 -0
- data/lib/generators/red_base/views_generator.rb +41 -0
- data/lib/red_base/active_record.rb +78 -0
- data/lib/red_base/active_record.rb~ +0 -0
- data/lib/red_base/api/groups_api.rb +41 -0
- data/lib/red_base/api/permissions_api.rb +24 -0
- data/lib/red_base/api/root.rb +15 -0
- data/lib/red_base/api/users_api.rb +20 -0
- data/lib/red_base/api.rb +61 -0
- data/lib/red_base/cucumber/auth.rb +45 -0
- data/lib/red_base/cucumber/exceptions.rb +40 -0
- data/lib/red_base/cucumber/interaction.rb +43 -0
- data/lib/red_base/cucumber/query.rb +28 -0
- data/lib/red_base/cucumber/urls.rb +76 -0
- data/lib/red_base/cucumber.rb +25 -0
- data/lib/red_base/dashboard/controller.rb +42 -0
- data/lib/red_base/dashboard/module.rb +45 -0
- data/lib/red_base/dashboard/module.rb~ +25 -0
- data/lib/red_base/dashboard.rb +60 -0
- data/lib/red_base/dashboard.rb~ +18 -0
- data/lib/red_base/engine.rb +132 -0
- data/lib/red_base/exceptions.rb +26 -0
- data/lib/red_base/i18n.rb +35 -0
- data/lib/red_base/initialize.rb +7 -0
- data/lib/red_base/omniauth/callbacks.rb +58 -0
- data/lib/red_base/omniauth/callbakcs.rb~ +7 -0
- data/lib/red_base/omniauth.rb +24 -0
- data/lib/red_base/omniauth.rb~ +1 -0
- data/lib/red_base/plugins.rb +44 -0
- data/lib/red_base/version.rb +22 -0
- data/lib/red_base.rb +30 -0
- data/lib/tasks/grunt/Gruntfile.js +25 -0
- data/lib/tasks/red_base_tasks.rake +23 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config/application.rb +23 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +80 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +12 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/public/404.html +58 -0
- data/spec/dummy/public/422.html +58 -0
- data/spec/dummy/public/500.html +57 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/spec_helper.rb +52 -0
- metadata +661 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# -----------------------------------------------------------------------------
|
|
2
|
+
# Red Base - Basic website skel engine
|
|
3
|
+
# Copyright (C) 2012-2013 Yellowen
|
|
4
|
+
#
|
|
5
|
+
# This program is free software; you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
|
7
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
8
|
+
# (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU General Public License along
|
|
16
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
+
# -----------------------------------------------------------------------------
|
|
19
|
+
|
|
20
|
+
module RedBase
|
|
21
|
+
module Generators
|
|
22
|
+
class InstallGenerator < Rails::Generators::Base
|
|
23
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
24
|
+
|
|
25
|
+
desc "Copy all the necessary files to use Red Base"
|
|
26
|
+
class_option :orm
|
|
27
|
+
|
|
28
|
+
def copy_init_files
|
|
29
|
+
template "devise.rb", "config/initializers/devise.rb"
|
|
30
|
+
template "red_base.rb", "config/initializers/red_base.rb"
|
|
31
|
+
template "fast_gettext.rb", "config/initializers/fast_gettext.rb"
|
|
32
|
+
template "formtastic.rb", "config/initializers/formstatic.rb"
|
|
33
|
+
template "seeds.rb", "db/seeds.rb"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def show_readme
|
|
37
|
+
readme "README" if behavior == :invoke
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# -----------------------------------------------------------------------------
|
|
2
|
+
# Red Base - Basic website skel engine
|
|
3
|
+
# Copyright (C) 2012-2013 Yellowen
|
|
4
|
+
#
|
|
5
|
+
# This program is free software; you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
|
7
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
8
|
+
# (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU General Public License along
|
|
16
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
+
# -----------------------------------------------------------------------------
|
|
19
|
+
|
|
20
|
+
module RedBase
|
|
21
|
+
module Generators
|
|
22
|
+
class InstallSpecsGenerator < Rails::Generators::Base
|
|
23
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
24
|
+
|
|
25
|
+
desc "Copy all the necessary files to install and use specs"
|
|
26
|
+
|
|
27
|
+
def install_gems
|
|
28
|
+
invoke "rspec:install"
|
|
29
|
+
invoke "cucumber:install", ["--capybara", "--rspec"]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def update_configurations
|
|
33
|
+
copy_file "features/step_definitions/email_steps.rb", "features/step_definitions/email_steps.rb"
|
|
34
|
+
copy_file "features/support/env.rb", "features/support/env.rb"
|
|
35
|
+
copy_file "spec/factories/groups.rb", "spec/factories/groups.rb"
|
|
36
|
+
copy_file "spec/factories/users.rb", "spec/factories/users.rb"
|
|
37
|
+
copy_file "spec/spec_helper.rb", "spec/spec_helper.rb"
|
|
38
|
+
copy_file "spec/support/devise.rb", "spec/support/devise.rb"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def show_readme
|
|
42
|
+
readme "SPECS" if behavior == :invoke
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# -----------------------------------------------------------------------------
|
|
2
|
+
# Red Base - Basic website skel engine
|
|
3
|
+
# Copyright (C) 2012-2013 Yellowen
|
|
4
|
+
#
|
|
5
|
+
# This program is free software; you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
|
7
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
8
|
+
# (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU General Public License along
|
|
16
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
+
# -----------------------------------------------------------------------------
|
|
19
|
+
|
|
20
|
+
module RedBase
|
|
21
|
+
module Generators
|
|
22
|
+
class JsScaffoldGenerator < Rails::Generators::Base
|
|
23
|
+
|
|
24
|
+
include ActionView::Helpers::TextHelper
|
|
25
|
+
|
|
26
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
27
|
+
|
|
28
|
+
argument :resource_name, :type => :string, :required => true
|
|
29
|
+
argument :resource_fields, type: :array, default: [], banner: "fields[:types]"
|
|
30
|
+
class_option :without_specs, :type => :boolean, :default => false
|
|
31
|
+
class_option :only_specs, :type => :boolean, :default => false
|
|
32
|
+
class_option :bulk_fields, :type => :string, :default => ""
|
|
33
|
+
class_option :no_bulk, :type => :boolean, :default => false
|
|
34
|
+
class_option :menu, :type => :string, :default => ""
|
|
35
|
+
|
|
36
|
+
desc "Create a new resource for client side application"
|
|
37
|
+
def create_module
|
|
38
|
+
unless options[:only_specs]
|
|
39
|
+
template "angularjs/module.js.erb", "#{angularjs_app_path}modules/#{resource_path}.js"
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def create_template
|
|
44
|
+
unless options[:only_specs]
|
|
45
|
+
template "angularjs/index.html.erb", "app/views/angularjs_templates/#{resource.underscore}/index.html"
|
|
46
|
+
template "angularjs/new.html.erb", "app/views/angularjs_templates/#{resource.underscore}/new.html"
|
|
47
|
+
template "angularjs/details.html.erb", "app/views/angularjs_templates/#{resource.underscore}/details.html"
|
|
48
|
+
|
|
49
|
+
template "views/index.json.jbuilder.erb", "app/views/api/v1/#{resource.pluralize.underscore}/index.json.jbuilder"
|
|
50
|
+
template "views/show.json.jbuilder.erb", "app/views/api/v1/#{resource.pluralize.underscore}/show.json.jbuilder"
|
|
51
|
+
template "views/create.json.jbuilder.erb", "app/views/api/v1/#{resource.pluralize.underscore}/create.json.jbuilder"
|
|
52
|
+
template "views/destroy.json.jbuilder.erb", "app/views/api/v1/#{resource.pluralize.underscore}/destroy.json.jbuilder"
|
|
53
|
+
template "views/update.json.jbuilder.erb", "app/views/api/v1/#{resource.pluralize.underscore}/update.json.jbuilder"
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def create_api
|
|
58
|
+
unless options[:only_specs]
|
|
59
|
+
template "api/controller.rb.erb", "app/controllers/api/v1/#{resource.pluralize.underscore}_controller.rb"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def create_specs
|
|
64
|
+
unless options[:without_specs]
|
|
65
|
+
template "features/api.feature", "features/#{resource.underscore}.api.feature"
|
|
66
|
+
template "features/api.step.rb", "features/step_definitions/#{resource.underscore}.rb"
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
def show_readme
|
|
70
|
+
readme "js_scaffold.README" if behavior == :invoke
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# PRIVATES --------------------------------------------
|
|
74
|
+
private
|
|
75
|
+
|
|
76
|
+
# Path to the resource
|
|
77
|
+
def resource_path
|
|
78
|
+
path_parts = resource_name.split("/")
|
|
79
|
+
if path_parts.length > 1
|
|
80
|
+
return "#{path_parts(0..-2).join("/")}/#{path_parts[-1].underscore}"
|
|
81
|
+
end
|
|
82
|
+
resource_name.underscore
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Url of resource
|
|
86
|
+
def resource_url
|
|
87
|
+
path_parts = resource_name.split("/")
|
|
88
|
+
if path_parts.length > 1
|
|
89
|
+
return "#{path_parts(0..-2).join("/")}/#{path_parts[-1].pluralize.underscore}"
|
|
90
|
+
end
|
|
91
|
+
resource_name.pluralize.underscore
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def resource
|
|
95
|
+
path_parts = resource_name.split("/")
|
|
96
|
+
if path_parts.length > 1
|
|
97
|
+
return path_parts[-1].camelize
|
|
98
|
+
end
|
|
99
|
+
resource_name.camelize
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def is_in_engine?
|
|
103
|
+
false
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def angularjs_app_path
|
|
107
|
+
path = RedBase::Engine.dashboard_js_manifest.split("/")[0..-2].join("/")
|
|
108
|
+
"app/assets/javascripts/#{path}/"
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# An array of fields like
|
|
112
|
+
# [name, type]
|
|
113
|
+
def fields
|
|
114
|
+
fields = []
|
|
115
|
+
resource_fields.each do |field|
|
|
116
|
+
name, type, to = field.split(":")
|
|
117
|
+
if ["belongs_to", "has_many"].include? type
|
|
118
|
+
type = Relation.new(type, to)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
fields << [name, type]
|
|
122
|
+
end
|
|
123
|
+
fields
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def fields_hash
|
|
127
|
+
Hash[fields]
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# Returns fields which is needed to be in bulk edit
|
|
131
|
+
def bulk_edit_fields
|
|
132
|
+
unless options[:bulk_fields].empty?
|
|
133
|
+
bfields = options[:bulk_fields].split(",")
|
|
134
|
+
fields = fields_hash
|
|
135
|
+
bfields.each do |f|
|
|
136
|
+
unless fields.include? f
|
|
137
|
+
raise ::Exception.new "'#{f}' is not in scaffold fields."
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
return bfields
|
|
141
|
+
else
|
|
142
|
+
return fields.keys
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Return an string to use as a function parameters each
|
|
147
|
+
# field appears as symbol
|
|
148
|
+
def fields_as_params(relations: false)
|
|
149
|
+
result = ""
|
|
150
|
+
field_num = 0
|
|
151
|
+
fields.each do |name, type|
|
|
152
|
+
if relations
|
|
153
|
+
if ["belongs_to"].include? type
|
|
154
|
+
result += " :#{name}_id"
|
|
155
|
+
else
|
|
156
|
+
result += " :#{name}"
|
|
157
|
+
end
|
|
158
|
+
field_num += 1
|
|
159
|
+
if field_num < fields.length
|
|
160
|
+
result += ","
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
else
|
|
164
|
+
unless ["belongs_to", "has_many"].include? type
|
|
165
|
+
result += " :#{name}"
|
|
166
|
+
field_num += 1
|
|
167
|
+
if field_num < fields.length
|
|
168
|
+
result += ","
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
if result
|
|
176
|
+
result = ",#{result}"
|
|
177
|
+
if result[-1] == ","
|
|
178
|
+
result = result[0..-2]
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
result
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
def random_json_data
|
|
186
|
+
data = {}
|
|
187
|
+
fields.each do |field, type|
|
|
188
|
+
case type
|
|
189
|
+
when "belongs_to"
|
|
190
|
+
data["#{field}_id"] = 1
|
|
191
|
+
when "integer"
|
|
192
|
+
data[field] = 1+ rand(1000)
|
|
193
|
+
else
|
|
194
|
+
data[field] = random_string
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
data.to_json.to_s
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def random_string
|
|
201
|
+
o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
|
|
202
|
+
(0...50).map{ o[rand(o.length)] }.join
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
class Relation < String
|
|
207
|
+
attr_accessor :to
|
|
208
|
+
|
|
209
|
+
def initialize(value, to_)
|
|
210
|
+
super(value)
|
|
211
|
+
self.to = to_
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
def resource_name
|
|
215
|
+
to.split("/").last
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def restangular
|
|
219
|
+
result = "API"
|
|
220
|
+
to.split("/").each do |resource|
|
|
221
|
+
result = "#{result}.all(\"#{resource}\")"
|
|
222
|
+
end
|
|
223
|
+
result
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def get_list
|
|
227
|
+
"#{restangular}.getList()"
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
==================================================
|
|
2
|
+
Steps to finish up installation:
|
|
3
|
+
|
|
4
|
+
1. Ensure you have defined default url options in your environments files. Here
|
|
5
|
+
is an example of default_url_options appropriate for a development environment
|
|
6
|
+
in config/environments/development.rb:
|
|
7
|
+
|
|
8
|
+
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
|
|
9
|
+
|
|
10
|
+
In production, :host should be set to the actual host of your application.
|
|
11
|
+
|
|
12
|
+
2. You can override your root controller through RedBase::HomeController class.
|
|
13
|
+
|
|
14
|
+
3. Ensure you have flash messages in app/views/layouts/application.html.erb.
|
|
15
|
+
Only if you want to change the layout
|
|
16
|
+
|
|
17
|
+
For example:
|
|
18
|
+
|
|
19
|
+
<p class="notice"><%= notice %></p>
|
|
20
|
+
<p class="alert"><%= alert %></p>
|
|
21
|
+
|
|
22
|
+
4. Create a javascript manifest in 'app/assets/javascripts/dashboard/application.js'
|
|
23
|
+
and require 'red_base/dashboard/application.js'.
|
|
24
|
+
|
|
25
|
+
NOTE: You can change the default manifest name and path via 'config.dashboard_js_manifest'
|
|
26
|
+
in 'config/initializers/red_base.rb'.
|
|
27
|
+
|
|
28
|
+
5. Make sure you take a look and configured conf/initializer/devise.rb
|
|
29
|
+
|
|
30
|
+
NOTE: if you want to use devise with omniauth configure them in
|
|
31
|
+
conf/initializer/devise.rb according to devise wiki
|
|
32
|
+
|
|
33
|
+
6. Make sure you take a look and configured conf/initializer/fast_gettext.rb
|
|
34
|
+
7. Make sure you take a look and configured conf/initializer/formtastic.rb
|
|
35
|
+
8. Add your resources to routes.rb like this:
|
|
36
|
+
|
|
37
|
+
namespace :api, :defaults => {:format => :json} do
|
|
38
|
+
namespace :v1 do
|
|
39
|
+
resources :resource
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
=======================================================================
|
|
2
|
+
|
|
3
|
+
Copy this snippet to your `config/application.rb`:
|
|
4
|
+
|
|
5
|
+
config.generators do |g|
|
|
6
|
+
g.test_framework :rspec, :fixture => false
|
|
7
|
+
g.fixture_replacement :factory_girl, :dir => 'spec/factories'
|
|
8
|
+
g.assets false
|
|
9
|
+
g.helper false
|
|
10
|
+
g.helper = false
|
|
11
|
+
g.view_specs false
|
|
12
|
+
g.helper_specs false
|
|
13
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<div class="details">
|
|
2
|
+
<% fields.each do |field_name, field_type| %>
|
|
3
|
+
<p>
|
|
4
|
+
<% case field_type
|
|
5
|
+
when "belongs_to" %> <b translate><%= field_name.capitalize %> :</b> {{object.<%= field_name %>.name}}
|
|
6
|
+
<% when "has_many" %><p>
|
|
7
|
+
<b translate><%= field_name.capitalize %> :</b>
|
|
8
|
+
<ul>
|
|
9
|
+
<li ng-repeat="item in object.<%= field_name %>"> {{ item.name }}</li>
|
|
10
|
+
</ul>
|
|
11
|
+
</p>
|
|
12
|
+
<% else %><b translate><%= field_name.capitalize %> :</b> {{object.<%= field_name %>}}
|
|
13
|
+
<% end %></p>
|
|
14
|
+
<% end %>
|
|
15
|
+
<ul class="button-group float-right">
|
|
16
|
+
<a ng-href="#/<%= resource_url %>/{{ object.id }}/edit" class="small">
|
|
17
|
+
<span class="fa fa-edit"></span> <span translated>Edit</span>
|
|
18
|
+
</a>
|
|
19
|
+
</ul>
|
|
20
|
+
</div>
|
|
File without changes
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<% unless options[:no_bulk] %>
|
|
2
|
+
<div ng-if="bulk_edit" class="fade_anim">
|
|
3
|
+
<form id="bulk_form">
|
|
4
|
+
<fieldset class="row clearmargin">
|
|
5
|
+
<legend>Bulk Edit</legend>
|
|
6
|
+
<div class="row">
|
|
7
|
+
<div class="small-6 columns">
|
|
8
|
+
<label for="field_name" translate>Field Name:</label>
|
|
9
|
+
|
|
10
|
+
<select id="field_name" ng-model="field_name" ng-change="field_name_change()">
|
|
11
|
+
<option value="0" selected translate>-- Select a field --</option>
|
|
12
|
+
<option ng-repeat="field in fields" value="{{ field.name }}" data-type="{{ field.type }}" data-to="{{ field.to }}"><span translate>{{ field.title }}</span></option>
|
|
13
|
+
</select>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="small-6 columns">
|
|
16
|
+
<label for="field_value" translate>Field Value:</label>
|
|
17
|
+
<div id="value_field">
|
|
18
|
+
<input id="field_value" ng-model="field_value" type="text" ng-if="current_field.type == 'string' || current_field.type == 'integer'">
|
|
19
|
+
<textarea id="field_value" ng-model="field_value" ng-if="current_field.type == 'text'"></textarea>
|
|
20
|
+
|
|
21
|
+
<select id="field_value" ng-model="field_value" ng-if="current_field.type == 'belongs_to'">
|
|
22
|
+
<option ng-repeat="item in cache[current_field.name]" value="{{ item.id }}">{{ item.name }}</option>
|
|
23
|
+
</select>
|
|
24
|
+
<select id="field_value" ng-model="field_value" ng-if="current_field.type == 'has_many'" multiple>
|
|
25
|
+
<option ng-repeat="item in cache[current_field.name]" value="{{ item.id }}">{{ item.name }}</option>
|
|
26
|
+
</select>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="row progressbar-container" ng-if="view_progressbar">
|
|
31
|
+
<div class="small-12 columns">
|
|
32
|
+
<div class="progressbar">
|
|
33
|
+
<div id="request_filler" class="filler yellow" style="width: {{ rfiller}};"></div>
|
|
34
|
+
<div id="success_filler" class="filler green" style="width: {{ sfiller}};"></div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="row">
|
|
38
|
+
<div class="small-3 columns float-right text-right">
|
|
39
|
+
<small>
|
|
40
|
+
{{ success }} <span translate>of</span> {{ total }}<span ng-if="failed > 0"> - <span translate>field:</span><span class="text-error"> {{ failed }}</span></span>
|
|
41
|
+
</small>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</fieldset>
|
|
45
|
+
<br />
|
|
46
|
+
<div class="row">
|
|
47
|
+
<div class="small-6 columns">
|
|
48
|
+
<button class="btn tiny green" ng-click="bulk_save()"><i class="fa fa-check"></i> <span translate>Save</span></button>
|
|
49
|
+
<button class="btn tiny red" ng-click="bulk_cancel()"><i class="fa fa-times"></i> <span translate>Cancel</span></button>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
<% end %>
|
|
55
|
+
<list-view buttons="buttons" objects="<%= resource.pluralize.underscore %>" title-attribute="'name'" details-template="details_template" item-per-page="10" on_delete="on_delete">
|
|
56
|
+
<div class="small-6 column text-left clearpadding">
|
|
57
|
+
<h3><i class="fa fa-group"></i> <span translate><%= resource.pluralize %></span></h3>
|
|
58
|
+
</div>
|
|
59
|
+
</list-view>
|