Compare commits

...

65 Commits

Author SHA1 Message Date
Philipp Rothmann 260c51eef5 add invalid funds message on grouporder page 2023-10-02 23:01:43 +02:00
Philipp Rothmann 82f0935d65 adapt financial transaction type for online payment provider 2023-10-02 23:00:24 +02:00
Philipp Rothmann 66bbafcd4d add mollie plugin 2023-10-02 22:46:46 +02:00
Philipp Rothmann 55234b4e27 continue development after release 2023-09-09 17:01:48 +02:00
Philipp Rothmann e194c68397 chore: bump version to 4.8.0 2023-09-09 10:52:39 +02:00
Philipp Rothmann e1b5824830 update changelog v4.8 2023-09-09 10:52:39 +02:00
Philipp Rothmann 91f27a0a48 chore: update chrowdin translations 2023-09-04 13:01:04 +02:00
Philipp Rothmann caa32de30c fix: rubocop violation 2023-08-23 12:47:58 +02:00
Philipp Rothmann 1e63c59a8a fix: loading trix editor overwrite in production 2023-08-23 12:17:32 +02:00
Philipp Rothmann a96f21134e feat(messages): attachment retention task 2023-08-04 12:48:15 +02:00
Philipp Rothmann bcf47ec92b feat(messages): add max file size for attachments 2023-08-04 12:48:15 +02:00
Philipp Rothmann ef6d6aa368 feat(messages): use trix editor in messages 2023-08-04 12:48:15 +02:00
Philipp Rothmann c4a53caf52 feat: add actiontext and trix editor 2023-08-04 12:48:15 +02:00
Philipp Rothmann 9282590c06 fix: update setup-chromedriver github action 2023-08-04 12:35:58 +02:00
Philipp Rothmann 817e409a2b fix test 2023-07-14 10:27:20 +02:00
Philipp Rothmann e80ec9c1ce change tests to use assert_select 2023-07-14 10:27:20 +02:00
Philipp Rothmann 7f23b4784c feat(finance): show sum of ordergroup balances 2023-07-14 10:27:20 +02:00
Harald Reingruber b07653b34f Add explanation comment to .gitattributes 2023-07-03 16:12:12 +02:00
Harald Reingruber c442327275 Fix line endings for Windows docker environment 2023-07-03 16:12:12 +02:00
Philipp Rothmann 33034e66b8 fix: add null checks for articles convert_units
Prevents division by zero exception because of a unit beeing 0.
A Unit becomes also zero e.g. when a comma symbol is used Unit.new("0,9kg") == 0

fixes #1014
2023-06-22 22:49:22 +02:00
kidhab 45e2668cea Update mail gem to .8.1 which fixes the permission error
Revert libv8 version
2023-06-17 14:03:58 +02:00
Philipp Rothmann 5f2130ca44 fix: rubocop todo EmptyExampleGroup wildcard 2023-06-17 13:44:21 +02:00
Philipp Rothmann 913136bb72 fix: invalid params request test
fixes #999
2023-06-17 13:31:43 +02:00
kidhab 4ac5bcae06 Update Ruby version and add info about dev packages 2023-06-17 10:33:15 +02:00
Philipp Rothmann 37b3b4523a fix: github action mysqladmin -> mariadb-admin ping 2023-06-16 13:33:21 +02:00
Philipp Rothmann a1682932ac fix: price_markup with value nil gives exception
fixes #1011
2023-06-16 13:20:33 +02:00
Philipp Rothmann 026c3a6285
introduce importmaps (#983)
* introduce importmaps

This commit introduces importmaps. They allow to use modern javacript ESM within rails without webpack, yarn etc.
see https://github.com/rails/importmap-rails for more details.

Co-authored-by: Philipp Rothmann <philipprothmann@posteo.de>
Co-authored-by: FGU <fgu@pragma-shift.net>

* fix: rubocop violations

---------

Co-authored-by: FGU <fgu@pragma-shift.net>
2023-06-14 13:29:31 +02:00
dependabot[bot] a8b2f387db
Bump doorkeeper from 5.6.2 to 5.6.6 (#1010)
Bumps [doorkeeper](https://github.com/doorkeeper-gem/doorkeeper) from 5.6.2 to 5.6.6.
- [Release notes](https://github.com/doorkeeper-gem/doorkeeper/releases)
- [Changelog](https://github.com/doorkeeper-gem/doorkeeper/blob/main/CHANGELOG.md)
- [Commits](https://github.com/doorkeeper-gem/doorkeeper/compare/v5.6.2...v5.6.6)

---
updated-dependencies:
- dependency-name: doorkeeper
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-14 08:18:33 +02:00
Philipp Rothmann 2151835afb fix: rubocop violation 2023-06-12 13:08:36 +02:00
kidhab 20dc8b8b82 Bump Ruby version to latest in 2.7 series 2023-06-10 10:54:03 +02:00
kidhab e4f91ef67a
Fill availability column at article export
closes #884
2023-06-10 10:47:47 +02:00
kidhab c50ba6eda5
feat: Disable member list via configuration (#990) 2023-06-10 10:32:16 +02:00
kidhab 075f3cfa1a
Make date configurable via locales (#997) 2023-06-10 10:31:22 +02:00
dependabot[bot] 64b99038e6
Bump nokogiri from 1.13.10 to 1.15.2 (#1005)
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.10 to 1.15.2.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.10...v1.15.2)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-09 20:06:14 +02:00
dependabot[bot] 7fe5fb4592
Bump rack from 2.2.5 to 2.2.7 (#1004)
Bumps [rack](https://github.com/rack/rack) from 2.2.5 to 2.2.7.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.5...v2.2.7)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-09 19:39:32 +02:00
viehlieb 8b0e03ff60 downgrade haml to make deface work 2023-06-09 19:02:41 +02:00
Philipp Rothmann 4bfa87d258 move CORS setup to initializer 2023-06-09 17:35:05 +02:00
Philipp Rothmann 20a67becf5 fix: assets precompile by using terser 2023-06-09 17:35:05 +02:00
Philipp Rothmann 91e07ab660 fix external link allow_other_host 2023-06-09 17:35:05 +02:00
Philipp Rothmann 285441cb4b fix group order matrix pdf 2023-06-09 17:35:05 +02:00
Philipp Rothmann fb2b4d8a8a chore: rubocop
chore: fix api test conventions

chore: rubocop -A spec/

chore: more rubocop -A

fix failing test

rubocop fixes

removes helper methods that are in my opinion dead code

more rubocop fixes

rubocop -a --auto-gen-config
2023-06-09 17:35:05 +02:00
Philipp Rothmann f6fb804bbe chore: update Gemfile.lock 2023-06-09 17:35:05 +02:00
Philipp Rothmann a7775f5a98 add setup_storage to stock_config 2023-06-09 17:35:05 +02:00
FGU b06656ba80 fix docker-compose 2023-06-09 17:35:05 +02:00
Philipp Rothmann 6e721db654 upgrade dockerfile to rails7 2023-06-09 17:35:05 +02:00
viehlieb 45ae192891 move BigDecimal.new to BigDecimal() 2023-06-09 17:35:05 +02:00
viehlieb 808baa5a98 change .search to .ransack for updated ransack gem 2023-06-09 17:35:05 +02:00
Philipp Rothmann 5cbe8dd968 fix database_config 2023-06-09 17:35:05 +02:00
Philipp Rothmann 34e238466f fix mail file permission bug 2023-06-09 17:35:05 +02:00
viehlieb 5fb10ec686 make foodsoft run for dev on rails 7 and ruby 2.7 2023-06-09 17:35:05 +02:00
viehlieb 50bf879fbf resolve zeitwerk issues 2023-06-09 17:35:05 +02:00
viehlieb ea248a5f28 removing concerns from autoload path 2023-06-09 17:35:05 +02:00
viehlieb 4ff44aed4c mv lib to app/lib due to upgrade 2023-06-09 17:35:05 +02:00
viehlieb 3d81dd6b57 rails up to 7.0and ruby to 2.7.2 2023-06-09 17:35:05 +02:00
Philipp Rothmann c67e9b5be8
Replace apivore with rswag for api tests (#969)
* Replace apivore api tests with rswag
* move to OpenAPI Spec 3.0.1
* a swagger UI is now reachable at http://localhost:3000/api-docs/index.html
*  swagger file is generated by running  `RAILS_ENV=test rails rswag`
    and it was moved from /docs/swagger.v1.yml to /swagger/v1/swagger.yml

---------

Co-authored-by: viehlieb <pf@pragma-shift.net>
2023-05-12 11:11:48 +02:00
hamaryns 8604e27fe9 Spelfouten, maar ook verbeteringen in Nederlands (#954)
* Spelfouten, maar ook verbeteringen in Nederlands

Correct spelling errors and improvements of Dutch

* Update nl.yml

* Update nl.yml

some more Dutch improvements
2023-04-21 18:58:06 +02:00
nurp f2d5936cf0
Turkish language support added (#995)
* Added Turkish translation with help of ChatGPT

* Changed 'article' and 'item' to 'ürün' and addedtranslations for messages plugin

* added translation for the rest of plugins

* merge conflicts

* fix tr.yml in messages plugin

* Corrected more translations

---------

Co-authored-by: Nurp <>
2023-04-12 21:42:03 +02:00
kidhab c01c16ecdb
Specify an URL to redirect after logout via settings (#989) 2023-03-30 10:05:47 +02:00
dependabot[bot] 67d0492ac4
Bump rack from 2.2.4 to 2.2.6.4 (#986)
Bumps [rack](https://github.com/rack/rack) from 2.2.4 to 2.2.6.4.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.4...v2.2.6.4)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 17:37:04 +02:00
dependabot[bot] 5f00a39841
Bump globalid from 1.0.0 to 1.0.1 (#978)
Bumps [globalid](https://github.com/rails/globalid) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/rails/globalid/releases)
- [Commits](https://github.com/rails/globalid/compare/v1.0.0...v1.0.1)

---
updated-dependencies:
- dependency-name: globalid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-29 17:34:38 +02:00
kidhab 8420323c92
Show a foodcoop's name as subtitle at login screen (#957) 2023-03-29 16:01:00 +02:00
kidhab e0f63eebdc
Open external websites in new browser window (#981)
Usually the Foodcoop's website and the help pages are external
resources. If they load in the same window one could forget to logout
from the Foodsoft.
2023-03-29 16:00:18 +02:00
kidhab a7a0830d43
Show order note as tooltip (#965) 2023-03-29 15:15:59 +02:00
Philipp Rothmann 503ed6c379
Add home controller test (#972)
Co-authored-by: viehlieb <pf@pragma-shift.net>
Co-authored-by: Tobias Kneuker <tk@pragma-shift.net>
2023-03-25 18:20:13 +01:00
decentral1se debce2a635
docs: roadmap & call (#984)
Co-authored-by: decentral1se <cellarspoon@riseup.net>
2023-03-05 14:07:49 +01:00
460 changed files with 11089 additions and 7166 deletions

5
.gitattributes vendored Normal file
View File

@ -0,0 +1,5 @@
# Fixes line endings for Windows (Docker) environment, which are by default converted to crlf
* text=auto
*.sh text eol=lf
proc-start text eol=lf
Rakefile text eol=lf

View File

@ -15,7 +15,7 @@ jobs:
MYSQL_DATABASE: test
MYSQL_ROOT_PASSWORD: password
options: >-
--health-cmd "mysqladmin ping"
--health-cmd "mariadb-admin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
@ -35,7 +35,9 @@ jobs:
- name: Checkout source code
uses: actions/checkout@v2
- name: Setup chromedriver
uses: nanasess/setup-chromedriver@v1.0.1
uses: nanasess/setup-chromedriver@v2
with:
chromedriver-version: '115.0.5790.170' # https://github.com/nanasess/setup-chromedriver/issues/200
- name: Setup ruby
uses: ruby/setup-ruby@v1
with:

File diff suppressed because it is too large Load Diff

View File

@ -1 +1 @@
2.6.9
2.7.8

View File

@ -1,3 +1,36 @@
# Foodsoft 4.8.0
* feat: Show total sums for ordergroup finances [#1017](https://github.com/foodcoops/foodsoft/pull/1017)
* feat: Richtext Messages and Attachments with Actiontext [#918](https://github.com/foodcoops/foodsoft/issues/918)
* feat: Make date configurable via locales [#997](https://github.com/foodcoops/foodsoft/pull/997)
* feat: Turkish language support added [#995](https://github.com/foodcoops/foodsoft/pull/995)
* feat: Disable member list via configuration [#990](https://github.com/foodcoops/foodsoft/pull/990)
* feat: Specify an URL to redirect after logout via settings #989
* feat: introduce importmaps [#983](https://github.com/foodcoops/foodsoft/pull/983)
* feat: ruby 2.7.2 and rails 7 upgrade [#979](https://github.com/foodcoops/foodsoft/pull/979)
* feat: Add home controller test [#972](https://github.com/foodcoops/foodsoft/pull/972)
* feat: Replace apivore with rswag for api tests [#969](https://github.com/foodcoops/foodsoft/pull/969)
* feat: increase test coverage [#966](https://github.com/foodcoops/foodsoft/pull/966)
* feat: Show order note as tooltip [#965](https://github.com/foodcoops/foodsoft/pull/965)
* feat: Add sd_notify [#961](https://github.com/foodcoops/foodsoft/pull/961)
* feat: Show instance name at login screen [#957](https://github.com/foodcoops/foodsoft/pull/957)
* feat: Enabled systemd socket activation [#942](https://github.com/foodcoops/foodsoft/pull/942)
* feat: Add table_print gem for debugging ActiveRecord queries in the console [#935](https://github.com/foodcoops/foodsoft/pull/935)
* feat: Add admin UI for SupplierCategories (supplier_categories) [#930](https://github.com/foodcoops/foodsoft/pull/930)
* fix: add null checks for articles convert_units [33034e6](https://github.com/foodcoops/foodsoft/commit/33034e66b88968dedc5289425e1eff847ee67e12)
* fix: downgrade haml to make deface work [#1003](https://github.com/foodcoops/foodsoft/pull/1003)
* fix: dutch translation errors [#954](https://github.com/foodcoops/foodsoft/pull/954)
* fix: Fixe filtering of active ordergroups [#934](https://github.com/foodcoops/foodsoft/pull/934)
* fix: Change password validation to allow longer passwords [#923](https://github.com/foodcoops/foodsoft/pull/923)
* fix: Invoice: change label "delivery" to "stock delivery" [#922](https://github.com/foodcoops/foodsoft/pull/922)
* fix: Allow decimal numbers in transaction collections [#921](https://github.com/foodcoops/foodsoft/pull/921)
* fix: Add validation of more article fields [#917](https://github.com/foodcoops/foodsoft/pull/917/files)
* fix: Add default time_zone [#912](https://github.com/foodcoops/foodsoft/pull/912)
* fix: Rename Piwik to Matomo [#911](https://github.com/foodcoops/foodsoft/pull/911/files)
* fix: Change instructions to rbenv [#910](https://github.com/foodcoops/foodsoft/pull/910/files)
# Foodsoft 4.7.1
(31 December 2020)

View File

@ -1,4 +1,4 @@
FROM ruby:2.6
FROM ruby:2.7
RUN supercronicUrl=https://github.com/aptible/supercronic/releases/download/v0.1.3/supercronic-linux-amd64 && \
supercronicBin=/usr/local/bin/supercronic && \
@ -22,6 +22,7 @@ RUN buildDeps='libmagic-dev' && \
apt-get update && \
apt-get install --no-install-recommends -y $buildDeps && \
echo 'gem: --no-document' >> ~/.gemrc && \
gem install bundler && \
bundle config build.nokogiri "--use-system-libraries" && \
bundle install --deployment --without development test -j 4 && \
apt-get purge -y --auto-remove $buildDeps && \
@ -48,9 +49,10 @@ RUN export DATABASE_URL=mysql2://localhost/temp?encoding=utf8 && \
rm -Rf /var/lib/apt/lists/* /var/cache/apt/*
# Make relevant dirs and files writable for app user
RUN mkdir -p tmp && \
RUN mkdir -p tmp storage && \
chown nobody config/app_config.yml && \
chown nobody tmp
chown nobody tmp && \
chown nobody storage
# Run app as unprivileged user
USER nobody

View File

@ -1,4 +1,4 @@
FROM ruby:2.6
FROM ruby:2.7
# Install dependencies
RUN deps='libmagic-dev chromium nodejs' && \
@ -19,6 +19,7 @@ ENV PORT=3000 \
WORKDIR /app
RUN gem install bundler
RUN bundle config build.nokogiri "--use-system-libraries"
EXPOSE 3000

105
Gemfile
View File

@ -1,87 +1,95 @@
# A sample Gemfile
source "https://rubygems.org"
source 'https://rubygems.org'
gem "rails", '~> 5.2'
gem 'rails', '~> 7.0'
gem 'sass-rails'
gem 'less-rails'
gem 'uglifier', '>= 1.0.3'
gem 'sassc-rails'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby
gem 'jquery-rails'
gem 'select2-rails'
gem 'rails_tokeninput'
gem 'bootsnap', require: false
gem 'bootstrap-datepicker-rails'
gem 'date_time_attribute'
gem 'rails-assets-listjs', '0.2.0.beta.4' # remember to maintain list.*.js plugins and template engines on update
gem 'i18n-js', '~> 3.0.0.rc8'
gem 'jquery-rails'
gem 'rails-assets-listjs', '0.2.0.beta.4' # remember to maintain list.*.js plugins and template engines on update
gem 'rails-i18n'
gem 'bootsnap', require: false
gem 'rails_tokeninput'
gem 'select2-rails'
gem 'mysql2'
gem 'prawn'
gem 'prawn-table'
gem 'haml'
gem 'haml-rails'
gem 'kaminari'
gem 'simple_form'
gem 'inherited_resources'
gem 'active_model_serializers', '~> 0.10.0'
gem 'acts_as_tree'
gem 'attribute_normalizer'
gem 'daemons'
gem 'doorkeeper'
gem 'doorkeeper-i18n'
gem 'haml', '~> 5.0'
gem 'haml-rails'
gem 'ice_cube'
gem 'inherited_resources'
gem 'kaminari'
gem 'mysql2'
gem 'prawn'
gem 'prawn-table'
gem 'puma'
gem 'rack-cors', require: 'rack/cors'
gem 'active_model_serializers', '~> 0.10.0'
gem 'twitter-bootstrap-rails', '~> 2.2.8'
gem 'rails-settings-cached', '= 0.4.3' # caching breaks tests until Rails 5 https://github.com/huacnlee/rails-settings-cached/issues/73
gem 'ransack'
gem 'resque'
gem 'ruby-units'
gem 'sd_notify'
gem 'simple_form'
gem 'simple-navigation', '~> 3.14.0' # 3.x for simple_navigation_bootstrap
gem 'simple-navigation-bootstrap'
gem 'sprockets', '< 4'
gem 'ransack'
gem 'acts_as_tree'
gem 'rails-settings-cached', '= 0.4.3' # caching breaks tests until Rails 5 https://github.com/huacnlee/rails-settings-cached/issues/73
gem 'resque'
gem 'puma'
gem 'sd_notify'
gem 'twitter-bootstrap-rails', '~> 2.2.8'
gem 'whenever', require: false # For defining cronjobs, see config/schedule.rb
gem 'ruby-units'
gem 'attribute_normalizer'
gem 'ice_cube'
gem 'recurring_select'
gem 'roo'
gem 'roo-xls'
gem 'spreadsheet'
# At time of development 01-06-2022 mmddyyyy necessary fix for config_helper.rb form builder was not in rubygems so we pull from github, see: https://github.com/gregschmit/recurring_select/pull/152
gem 'exception_notification'
gem 'gaffe'
gem 'ruby-filemagic'
gem 'mime-types'
gem 'hashie', '~> 3.4.6', require: false # https://github.com/westfieldlabs/apivore/issues/114
gem "image_processing", "~> 1.12"
gem "importmap-rails", "~> 1.1"
gem 'midi-smtp-server'
gem 'mime-types'
gem 'recurring_select', git: 'https://github.com/gregschmit/recurring_select'
gem 'roo'
gem 'roo-xls'
gem 'rswag-api'
gem 'rswag-ui'
gem 'ruby-filemagic'
gem 'spreadsheet'
gem "terser", "~> 1.1"
# we use the git version of acts_as_versioned, and need to include it in this Gemfile
gem 'acts_as_versioned', git: 'https://github.com/technoweenie/acts_as_versioned.git'
gem 'foodsoft_wiki', path: 'plugins/wiki'
gem 'foodsoft_messages', path: 'plugins/messages'
gem 'foodsoft_documents', path: 'plugins/documents'
gem 'foodsoft_discourse', path: 'plugins/discourse'
gem 'foodsoft_documents', path: 'plugins/documents'
gem 'foodsoft_links', path: 'plugins/links'
gem 'foodsoft_messages', path: 'plugins/messages'
gem 'foodsoft_polls', path: 'plugins/polls'
gem 'foodsoft_wiki', path: 'plugins/wiki'
# plugins not enabled by default
# gem 'foodsoft_current_orders', path: 'plugins/current_orders'
# gem 'foodsoft_printer', path: 'plugins/printer'
# gem 'foodsoft_uservoice', path: 'plugins/uservoice'
gem 'foodsoft_mollie', path: 'plugins/mollie'
group :development do
gem 'sqlite3', '~> 1.3.6'
gem 'mailcatcher'
gem 'web-console'
gem 'listen'
gem 'mailcatcher'
gem 'sqlite3', '~> 1.3.6'
gem 'web-console'
# Better error output
gem 'better_errors'
gem 'binding_of_caller'
# gem "rails-i18n-debug"
# chrome debugging extension https://github.com/dejan/rails_panel
gem 'meta_request'
# TODO: disabled due to https://github.com/rails/rails/issues/40781
# gem 'meta_request'
# Get infos when not using proper eager loading
gem 'bullet'
@ -101,21 +109,20 @@ group :development, :test do
end
group :test do
gem 'rspec-rails'
gem 'apparition' # Capybara javascript driver
gem 'capybara'
gem 'connection_pool'
gem 'database_cleaner'
gem 'factory_bot_rails'
gem 'faker'
gem 'capybara'
gem 'apparition' # Capybara javascript driver
gem 'database_cleaner'
gem 'connection_pool'
gem 'rspec-rails'
# need to include rspec components before i18n-spec or rake fails in test environment
gem 'i18n-spec'
gem 'rspec-core'
gem 'rspec-rerun'
gem 'i18n-spec'
# code coverage
gem 'simplecov', require: false
gem 'simplecov-lcov', require: false
# api
gem 'apivore', require: false
gem 'hashie', '~> 3.4.6', require: false # https://github.com/westfieldlabs/apivore/issues/114
gem 'rswag-specs'
end

View File

@ -1,3 +1,14 @@
GIT
remote: https://github.com/gregschmit/recurring_select
revision: 29febc4c4abdd6c30636c33a7d2daecb09973ecf
specs:
recurring_select (3.0.0)
coffee-rails (>= 3.1)
ice_cube (>= 0.11)
jquery-rails (>= 3.0)
rails (>= 5.2)
sass-rails (>= 4.0)
GIT
remote: https://github.com/technoweenie/acts_as_versioned.git
revision: 63b1fc8529d028fae632fe80ec0cb25df56cd76b
@ -37,6 +48,13 @@ PATH
mail
rails
PATH
remote: plugins/mollie
specs:
foodsoft_mollie (0.0.1)
mollie-api-ruby
rails
PATH
remote: plugins/polls
specs:
@ -59,67 +77,83 @@ PATH
GEM
remote: https://rubygems.org/
specs:
actioncable (5.2.8.1)
actionpack (= 5.2.8.1)
actioncable (7.0.4)
actionpack (= 7.0.4)
activesupport (= 7.0.4)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailer (5.2.8.1)
actionpack (= 5.2.8.1)
actionview (= 5.2.8.1)
activejob (= 5.2.8.1)
actionmailbox (7.0.4)
actionpack (= 7.0.4)
activejob (= 7.0.4)
activerecord (= 7.0.4)
activestorage (= 7.0.4)
activesupport (= 7.0.4)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.0.4)
actionpack (= 7.0.4)
actionview (= 7.0.4)
activejob (= 7.0.4)
activesupport (= 7.0.4)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
actionpack (5.2.8.1)
actionview (= 5.2.8.1)
activesupport (= 5.2.8.1)
rack (~> 2.0, >= 2.0.8)
actionpack (7.0.4)
actionview (= 7.0.4)
activesupport (= 7.0.4)
rack (~> 2.0, >= 2.2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.2.8.1)
activesupport (= 5.2.8.1)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (7.0.4)
actionpack (= 7.0.4)
activerecord (= 7.0.4)
activestorage (= 7.0.4)
activesupport (= 7.0.4)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.0.4)
activesupport (= 7.0.4)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
active_model_serializers (0.10.13)
actionpack (>= 4.1, < 7.1)
activemodel (>= 4.1, < 7.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (5.2.8.1)
activesupport (= 5.2.8.1)
activejob (7.0.4)
activesupport (= 7.0.4)
globalid (>= 0.3.6)
activemodel (5.2.8.1)
activesupport (= 5.2.8.1)
activerecord (5.2.8.1)
activemodel (= 5.2.8.1)
activesupport (= 5.2.8.1)
arel (>= 9.0)
activestorage (5.2.8.1)
actionpack (= 5.2.8.1)
activerecord (= 5.2.8.1)
marcel (~> 1.0.0)
activesupport (5.2.8.1)
activemodel (7.0.4)
activesupport (= 7.0.4)
activerecord (7.0.4)
activemodel (= 7.0.4)
activesupport (= 7.0.4)
activestorage (7.0.4)
actionpack (= 7.0.4)
activejob (= 7.0.4)
activerecord (= 7.0.4)
activesupport (= 7.0.4)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (7.0.4)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
acts_as_tree (2.9.1)
activerecord (>= 3.0.0)
addressable (2.8.1)
public_suffix (>= 2.0.2, < 6.0)
apivore (1.6.2)
actionpack (>= 4, < 6)
hashie (~> 3.3)
json-schema (~> 2.5)
rspec (~> 3)
rspec-expectations (~> 3.1)
rspec-mocks (~> 3.1)
apparition (0.6.0)
capybara (~> 3.13, < 4)
websocket-driver (>= 0.6.5)
arel (9.0.0)
ast (2.4.2)
attribute_normalizer (1.2.0)
base32 (0.3.4)
@ -130,15 +164,15 @@ GEM
bindex (0.8.1)
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1)
bootsnap (1.13.0)
bootsnap (1.15.0)
msgpack (~> 1.2)
bootstrap-datepicker-rails (1.9.0.1)
railties (>= 3.0)
builder (3.2.4)
bullet (7.0.3)
bullet (7.0.7)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
capybara (3.36.0)
capybara (3.38.0)
addressable
matrix
mini_mime (>= 0.1.3)
@ -159,7 +193,7 @@ GEM
execjs
coffee-script-source (1.12.2)
commonjs (0.2.7)
concurrent-ruby (1.1.10)
concurrent-ruby (1.2.2)
connection_pool (2.3.0)
content_for_in_controllers (0.0.2)
crass (1.0.6)
@ -170,6 +204,7 @@ GEM
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
date (3.3.3)
date_time_attribute (0.1.2)
activesupport (>= 3.0.0)
debug_inspector (1.1.0)
@ -182,13 +217,13 @@ GEM
diff-lcs (1.5.0)
diffy (3.4.2)
docile (1.4.0)
doorkeeper (5.6.0)
doorkeeper (5.6.6)
railties (>= 5)
doorkeeper-i18n (5.2.5)
doorkeeper-i18n (5.2.6)
doorkeeper (>= 5.2)
email_reply_trimmer (0.1.13)
erubi (1.11.0)
eventmachine (1.2.7)
erubi (1.12.0)
eventmachine (1.0.9.1)
exception_notification (4.5.0)
actionmailer (>= 5.2, < 8)
activesupport (>= 5.2, < 8)
@ -199,16 +234,15 @@ GEM
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
railties (>= 5.0.0)
faker (2.22.0)
faker (3.1.0)
i18n (>= 1.8.11, < 2)
ffi (1.15.5)
gaffe (1.2.0)
rails (>= 4.0.0)
globalid (1.0.0)
globalid (1.0.1)
activesupport (>= 5.0)
haml (6.0.5)
temple (>= 0.8.2)
thor
haml (5.2.2)
temple (>= 0.8.0)
tilt
haml-rails (2.1.0)
actionpack (>= 5.1)
@ -220,13 +254,19 @@ GEM
activesupport (>= 5.2)
hashie (3.4.6)
htmlentities (4.3.4)
i18n (1.12.0)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
i18n-js (3.0.11)
i18n (>= 0.6.6, < 2)
i18n-spec (0.6.0)
iso
ice_cube (0.16.4)
image_processing (1.12.2)
mini_magick (>= 4.9.5, < 5)
ruby-vips (>= 2.0.17, < 3)
importmap-rails (1.1.5)
actionpack (>= 6.0.0)
railties (>= 6.0.0)
inherited_resources (1.13.1)
actionpack (>= 5.2, < 7.1)
has_scope (~> 0.6)
@ -235,13 +275,13 @@ GEM
interception (0.5)
iso (0.4.0)
i18n
jquery-rails (4.5.0)
jquery-rails (4.5.1)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
json (2.6.2)
json-schema (2.8.1)
addressable (>= 2.4)
json (2.6.3)
json-schema (3.0.0)
addressable (>= 2.8)
jsonapi-renderer (0.2.2)
kaminari (1.2.2)
activesupport (>= 4.1.0)
@ -262,14 +302,18 @@ GEM
less (~> 2.6.0)
sprockets (~> 3.0)
libv8 (3.16.14.19)
libv8 (3.16.14.19-x86_64-linux)
listen (3.7.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
loofah (2.19.1)
loofah (2.21.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
nokogiri (>= 1.12.0)
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
net-pop
net-smtp
mailcatcher (0.2.4)
eventmachine
haml
@ -282,29 +326,39 @@ GEM
thin
marcel (1.0.2)
matrix (0.4.2)
meta_request (0.7.3)
rack-contrib (>= 1.1, < 3)
railties (>= 3.0.0, < 7)
method_source (1.0.0)
midi-smtp-server (3.0.3)
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2022.0105)
mini_magick (4.12.0)
mini_mime (1.1.2)
mini_portile2 (2.8.0)
minitest (5.16.3)
mini_portile2 (2.8.2)
minitest (5.18.0)
mollie-api-ruby (4.7.1)
mono_logger (1.1.1)
msgpack (1.6.0)
multi_json (1.15.0)
mustermann (3.0.0)
ruby2_keywords (~> 0.0.1)
mysql2 (0.5.4)
net-imap (0.3.4)
date
net-protocol
net-pop (0.1.2)
net-protocol
net-protocol (0.2.1)
timeout
net-smtp (0.3.3)
net-protocol
nio4r (2.5.8)
nokogiri (1.13.10)
mini_portile2 (~> 2.8.0)
nokogiri (1.15.2)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
parallel (1.22.1)
parser (3.1.2.1)
nokogiri (1.15.2-x86_64-linux)
racc (~> 1.4)
parallel (1.23.0)
parser (3.2.2.1)
ast (~> 2.4.1)
pdf-core (0.9.0)
polyglot (0.3.5)
@ -322,75 +376,70 @@ GEM
pry-stack_explorer (0.6.1)
binding_of_caller (~> 1.0)
pry (~> 0.13)
public_suffix (5.0.0)
puma (5.6.5)
public_suffix (5.0.1)
puma (6.0.2)
nio4r (~> 2.0)
racc (1.6.1)
rack (2.2.4)
rack-contrib (2.3.0)
rack (~> 2.0)
racc (1.7.0)
rack (2.2.7)
rack-cors (1.1.1)
rack (>= 2.0.0)
rack-protection (3.0.4)
rack-protection (3.0.5)
rack
rack-test (2.0.2)
rack-test (2.1.0)
rack (>= 1.3)
rails (5.2.8.1)
actioncable (= 5.2.8.1)
actionmailer (= 5.2.8.1)
actionpack (= 5.2.8.1)
actionview (= 5.2.8.1)
activejob (= 5.2.8.1)
activemodel (= 5.2.8.1)
activerecord (= 5.2.8.1)
activestorage (= 5.2.8.1)
activesupport (= 5.2.8.1)
bundler (>= 1.3.0)
railties (= 5.2.8.1)
sprockets-rails (>= 2.0.0)
rails (7.0.4)
actioncable (= 7.0.4)
actionmailbox (= 7.0.4)
actionmailer (= 7.0.4)
actionpack (= 7.0.4)
actiontext (= 7.0.4)
actionview (= 7.0.4)
activejob (= 7.0.4)
activemodel (= 7.0.4)
activerecord (= 7.0.4)
activestorage (= 7.0.4)
activesupport (= 7.0.4)
bundler (>= 1.15.0)
railties (= 7.0.4)
rails-assets-listjs (0.2.0.beta.4)
railties (>= 3.1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.4.4)
loofah (~> 2.19, >= 2.19.1)
rails-i18n (5.1.3)
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
rails-i18n (7.0.6)
i18n (>= 0.7, < 2)
railties (>= 5.0, < 6)
railties (>= 6.0.0, < 8)
rails-settings-cached (0.4.3)
rails (>= 4.2.0)
rails_tokeninput (1.7.0)
railties (>= 3.1.0)
railties (5.2.8.1)
actionpack (= 5.2.8.1)
activesupport (= 5.2.8.1)
railties (7.0.4)
actionpack (= 7.0.4)
activesupport (= 7.0.4)
method_source
rake (>= 0.8.7)
thor (>= 0.19.0, < 2.0)
rake (>= 12.2)
thor (~> 1.0)
zeitwerk (~> 2.5)
rainbow (3.1.1)
rake (13.0.6)
ransack (2.5.0)
activerecord (>= 5.2.4)
activesupport (>= 5.2.4)
ransack (3.2.1)
activerecord (>= 6.1.5)
activesupport (>= 6.1.5)
i18n
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
recurring_select (3.0.0)
coffee-rails (>= 3.1)
ice_cube (>= 0.11)
jquery-rails (>= 3.0)
rails (>= 5.2)
sass-rails (>= 4.0)
redis (5.0.5)
redis-client (>= 0.9.0)
redis-client (0.9.0)
redis-client (0.11.2)
connection_pool
redis-namespace (1.9.0)
redis-namespace (1.10.0)
redis (>= 4)
ref (2.0.0)
regexp_parser (2.6.0)
regexp_parser (2.8.0)
responders (3.0.1)
actionpack (>= 5.0)
railties (>= 5.0)
@ -400,59 +449,71 @@ GEM
redis-namespace (~> 1.6)
sinatra (>= 0.9.2)
rexml (3.2.5)
roo (2.8.3)
roo (2.9.0)
nokogiri (~> 1)
rubyzip (>= 1.3.0, < 3.0.0)
roo-xls (1.2.0)
nokogiri
roo (>= 2.0.0, < 3)
spreadsheet (> 0.9.0)
rspec (3.11.0)
rspec-core (~> 3.11.0)
rspec-expectations (~> 3.11.0)
rspec-mocks (~> 3.11.0)
rspec-core (3.11.0)
rspec-support (~> 3.11.0)
rspec-expectations (3.11.1)
rspec (3.12.0)
rspec-core (~> 3.12.0)
rspec-expectations (~> 3.12.0)
rspec-mocks (~> 3.12.0)
rspec-core (3.12.0)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.11.0)
rspec-mocks (3.11.1)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.11.0)
rspec-rails (5.1.2)
actionpack (>= 5.2)
activesupport (>= 5.2)
railties (>= 5.2)
rspec-core (~> 3.10)
rspec-expectations (~> 3.10)
rspec-mocks (~> 3.10)
rspec-support (~> 3.10)
rspec-support (~> 3.12.0)
rspec-rails (6.0.1)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
rspec-core (~> 3.11)
rspec-expectations (~> 3.11)
rspec-mocks (~> 3.11)
rspec-support (~> 3.11)
rspec-rerun (1.1.0)
rspec (~> 3.0)
rspec-support (3.11.1)
rubocop (1.36.0)
rspec-support (3.12.0)
rswag-api (2.7.0)
railties (>= 3.1, < 7.1)
rswag-specs (2.9.0)
activesupport (>= 3.1, < 7.1)
json-schema (>= 2.2, < 4.0)
railties (>= 3.1, < 7.1)
rspec-core (>= 2.14)
rswag-ui (2.7.0)
actionpack (>= 3.1, < 7.1)
railties (>= 3.1, < 7.1)
rubocop (1.50.2)
json (~> 2.3)
parallel (~> 1.10)
parser (>= 3.1.2.1)
parser (>= 3.2.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.20.1, < 2.0)
rubocop-ast (>= 1.28.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.21.0)
parser (>= 3.1.1.0)
rubocop-rails (2.16.1)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.28.1)
parser (>= 3.2.1.0)
rubocop-rails (2.17.4)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-rspec (2.13.2)
rubocop-rspec (2.16.0)
rubocop (~> 1.33)
ruby-filemagic (0.7.3)
ruby-ole (1.2.12.2)
ruby-prof (1.4.3)
ruby-progressbar (1.11.0)
ruby-prof (1.4.5)
ruby-progressbar (1.13.0)
ruby-units (3.0.0)
ruby-vips (2.1.4)
ffi (~> 1.12)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
sass-rails (6.0.0)
@ -475,21 +536,21 @@ GEM
simple_form (5.1.0)
actionpack (>= 5.2)
activemodel (>= 5.2)
simplecov (0.21.2)
simplecov (0.22.0)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3)
simplecov-lcov (0.8.0)
simplecov_json_formatter (0.1.4)
sinatra (3.0.4)
sinatra (3.0.5)
mustermann (~> 3.0)
rack (~> 2.2, >= 2.2.4)
rack-protection (= 3.0.4)
rack-protection (= 3.0.5)
tilt (~> 2.0)
skinny (0.2.2)
eventmachine (~> 1.0)
thin
skinny (0.2.4)
eventmachine (~> 1.0.0)
thin (>= 1.5, < 1.7)
spreadsheet (1.3.0)
ruby-ole
sprockets (3.7.2)
@ -503,17 +564,19 @@ GEM
sqlite3-ruby (1.3.3)
sqlite3 (>= 1.3.3)
table_print (1.5.7)
temple (0.8.2)
temple (0.9.1)
terser (1.1.13)
execjs (>= 0.3.0, < 3)
therubyracer (0.12.3)
libv8 (~> 3.16.14.15)
ref
thin (1.8.1)
daemons (~> 1.0, >= 1.0.9)
eventmachine (~> 1.0, >= 1.0.4)
rack (>= 1, < 3)
thor (1.2.1)
thread_safe (0.3.6)
thin (1.6.2)
daemons (>= 1.0.9)
eventmachine (>= 1.0.0)
rack (>= 1.0.0)
thor (1.2.2)
tilt (2.0.11)
timeout (0.3.1)
ttfunk (1.7.0)
twitter-bootstrap-rails (2.2.8)
actionpack (>= 3.1)
@ -522,20 +585,18 @@ GEM
railties (>= 3.1)
twitter-text (1.14.7)
unf (~> 0.1.0)
tzinfo (1.2.10)
thread_safe (~> 0.1)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (2.3.0)
unicode-display_width (2.4.2)
uniform_notifier (1.16.0)
web-console (3.7.0)
actionview (>= 5.0)
activemodel (>= 5.0)
web-console (4.2.0)
actionview (>= 6.0.0)
activemodel (>= 6.0.0)
bindex (>= 0.4.0)
railties (>= 5.0)
railties (>= 6.0.0)
websocket-driver (0.7.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
@ -549,15 +610,16 @@ GEM
twitter-text
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.8)
PLATFORMS
ruby
x86_64-linux
DEPENDENCIES
active_model_serializers (~> 0.10.0)
acts_as_tree
acts_as_versioned!
apivore
apparition
attribute_normalizer
better_errors
@ -579,22 +641,24 @@ DEPENDENCIES
foodsoft_documents!
foodsoft_links!
foodsoft_messages!
foodsoft_mollie!
foodsoft_polls!
foodsoft_wiki!
gaffe
haml
haml (~> 5.0)
haml-rails
hashie (~> 3.4.6)
i18n-js (~> 3.0.0.rc8)
i18n-spec
ice_cube
image_processing (~> 1.12)
importmap-rails (~> 1.1)
inherited_resources
jquery-rails
kaminari
less-rails
listen
mailcatcher
meta_request
midi-smtp-server
mime-types
mysql2
@ -604,26 +668,29 @@ DEPENDENCIES
pry-stack_explorer
puma
rack-cors
rails (~> 5.2)
rails (~> 7.0)
rails-assets-listjs (= 0.2.0.beta.4)
rails-i18n
rails-settings-cached (= 0.4.3)
rails_tokeninput
ransack
recurring_select
recurring_select!
resque
roo
roo-xls
rspec-core
rspec-rails
rspec-rerun
rswag-api
rswag-specs
rswag-ui
rubocop
rubocop-rails
rubocop-rspec
ruby-filemagic
ruby-prof
ruby-units
sass-rails
sassc-rails
sd_notify
select2-rails
simple-navigation (~> 3.14.0)
@ -635,11 +702,11 @@ DEPENDENCIES
sprockets (< 4)
sqlite3 (~> 1.3.6)
table_print
terser (~> 1.1)
therubyracer
twitter-bootstrap-rails (~> 2.2.8)
uglifier (>= 1.0.3)
web-console
whenever
BUNDLED WITH
1.17.3
2.4.5

View File

@ -1,5 +1,6 @@
Foodsoft
=========
[![Build Status](https://github.com/foodcoops/foodsoft/workflows/Ruby/badge.svg)](https://github.com/foodcoops/foodsoft/actions)
[![Coverage Status](https://coveralls.io/repos/foodcoops/foodsoft/badge.svg?branch=master)](https://coveralls.io/r/foodcoops/foodsoft?branch=master)
[![Docs Status](https://inch-ci.org/github/foodcoops/foodsoft.svg?branch=master)](http://inch-ci.org/github/foodcoops/foodsoft)
@ -15,10 +16,16 @@ If you're a food coop considering to use foodsoft, please have a look at the [wi
More information about using this software and contributing can be found on the [wiki](https://github.com/foodcoops/foodsoft/wiki).
Roadmap
-------
If you'd like to see what is currently bring prioritised for development, check [our roadmap](https://github.com/orgs/foodcoops/projects/1). If you'd like to influence the roadmap, please join our [monthly community call](https://forum.foodcoops.net/t/foodsoft-monthly-community-call/573/6). As of March 2023, Foodsoft has limited development capacity but we are trying to build this up once more. For now, we try to prioritise what we work on, in order to focus our efforts. If your proposed changes are waiting for some time without review, please join the community call to discuss.
Developing
----------
> Foodsoft development needs your help! If you want to hack/triage/organise to improve the software, please consider joining our monthly community calls which are announced on [this forum thread](https://forum.foodcoops.net/t/foodsoft-monthly-community-call/573/6). In these calls, we check in with each other, discuss what to prioritise and try to make progress with development and community issues together.
Get foodsoft [running locally](doc/SETUP_DEVELOPMENT.md),
then visit our [Developing Guidelines](https://github.com/foodcoops/foodsoft/wiki/Developing-Guidelines)
page on the wiki.
@ -35,7 +42,6 @@ Deploying
Setup foodsoft to [run in production](doc/SETUP_PRODUCTION.md), or join an existing
[hosting platform](https://foodcoops.net/foodsoft-hosting/).
License
-------

View File

@ -1,7 +1,7 @@
#!/usr/bin/env rake
# Add your own tasks in files placed in lib/tasks ending in .rake,
require File.expand_path('../config/application', __FILE__)
require File.expand_path('config/application', __dir__)
require 'rake'
require 'rspec-rerun/tasks' if defined?(RSpec) # http://stackoverflow.com/a/16853615/2866660

View File

@ -1 +1 @@
4.7.99
4.8.99

View File

@ -8,6 +8,7 @@
//= require bootstrap-datepicker/locales/bootstrap-datepicker.es
//= require bootstrap-datepicker/locales/bootstrap-datepicker.nl
//= require bootstrap-datepicker/locales/bootstrap-datepicker.fr
//= require bootstrap-datepicker/locales/bootstrap-datepicker.tr
//= require list
//= require list.unlist
//= require list.delay

View File

@ -180,16 +180,12 @@ function updateBalance() {
$('#new_balance').html(I18n.l("currency", balance));
$('#total_balance').val(I18n.l("currency", balance));
// determine bgcolor and submit button state according to balance
var bgcolor = '';
if (balance < minimumBalance) {
bgcolor = '#FF0000';
$('#submit_button').attr('disabled', 'disabled')
$('#available_funds_error').css('display', 'block')
} else {
$('#submit_button').removeAttr('disabled')
}
// update bgcolor
for (i in itemTotal) {
$('#td_price_' + i).css('background-color', bgcolor);
$('#available_funds_error').css('display', 'none')
}
}
@ -232,4 +228,6 @@ $(function() {
});
updateButtons($(document));
$(document).ready(updateBalance);
});

View File

@ -0,0 +1,31 @@
/*
* Provides a drop-in pointer for the default Trix stylesheet that will format the toolbar and
* the trix-editor content (whether displayed or under editing). Feel free to incorporate this
* inclusion directly in any other asset bundle and remove this file.
*
*= require trix
*/
/*
* We need to override trix.css’s image gallery styles to accommodate the
* <action-text-attachment> element we wrap around attachments. Otherwise,
* images in galleries will be squished by the max-width: 33%; rule.
*/
.trix-content .attachment-gallery > action-text-attachment,
.trix-content .attachment-gallery > .attachment {
flex: 1 0 33%;
padding: 0 0.5em;
max-width: 33%;
}
.trix-content .attachment-gallery.attachment-gallery--2 > action-text-attachment,
.trix-content .attachment-gallery.attachment-gallery--2 > .attachment, .trix-content .attachment-gallery.attachment-gallery--4 > action-text-attachment,
.trix-content .attachment-gallery.attachment-gallery--4 > .attachment {
flex-basis: 50%;
max-width: 50%;
}
.trix-content action-text-attachment .attachment {
padding: 0 !important;
max-width: 100% !important;
}

View File

@ -7,4 +7,5 @@
*= require list.unlist
*= require list.missing
*= require recurring_select
*= require actiontext
*/

View File

@ -3,39 +3,39 @@ class Admin::BankAccountsController < Admin::BaseController
def new
@bank_account = BankAccount.new(params[:bank_account])
render :layout => false
render layout: false
end
def edit
@bank_account = BankAccount.find(params[:id])
render action: 'new', layout: false
end
def create
@bank_account = BankAccount.new(params[:bank_account])
if @bank_account.valid? && @bank_account.save
redirect_to update_bank_accounts_admin_finances_url, :status => 303
redirect_to update_bank_accounts_admin_finances_url, status: :see_other
else
render :action => 'new', :layout => false
render action: 'new', layout: false
end
end
def edit
@bank_account = BankAccount.find(params[:id])
render :action => 'new', :layout => false
end
def update
@bank_account = BankAccount.find(params[:id])
if @bank_account.update(params[:bank_account])
redirect_to update_bank_accounts_admin_finances_url, :status => 303
redirect_to update_bank_accounts_admin_finances_url, status: :see_other
else
render :action => 'new', :layout => false
render action: 'new', layout: false
end
end
def destroy
@bank_account = BankAccount.find(params[:id])
@bank_account.destroy
redirect_to update_bank_accounts_admin_finances_url, :status => 303
rescue => error
flash.now[:alert] = error.message
redirect_to update_bank_accounts_admin_finances_url, status: :see_other
rescue StandardError => e
flash.now[:alert] = e.message
render template: 'shared/alert'
end
end

View File

@ -6,6 +6,11 @@ class Admin::BankGatewaysController < Admin::BaseController
render layout: false
end
def edit
@bank_gateway = BankGateway.find(params[:id])
render action: 'new', layout: false
end
def create
@bank_gateway = BankGateway.new(params[:bank_gateway])
if @bank_gateway.valid? && @bank_gateway.save
@ -15,11 +20,6 @@ class Admin::BankGatewaysController < Admin::BaseController
end
end
def edit
@bank_gateway = BankGateway.find(params[:id])
render action: 'new', layout: false
end
def update
@bank_gateway = BankGateway.find(params[:id])

View File

@ -1,5 +1,5 @@
class Admin::ConfigsController < Admin::BaseController
before_action :get_tabs, only: [:show, :list]
before_action :get_tabs, only: %i[show list]
def show
@current_tab = @tabs.include?(params[:tab]) ? params[:tab] : @tabs.first
@ -16,7 +16,7 @@ class Admin::ConfigsController < Admin::BaseController
def update
parse_recurring_selects! params[:config][:order_schedule]
ActiveRecord::Base.transaction do
# TODO support nested configuration keys
# TODO: support nested configuration keys
params[:config].each do |key, val|
FoodsoftConfig[key] = convert_config_value val
end
@ -29,7 +29,7 @@ class Admin::ConfigsController < Admin::BaseController
# Set configuration tab names as `@tabs`
def get_tabs
@tabs = %w(foodcoop payment tasks messages layout language security others)
@tabs = %w[foodcoop payment tasks messages layout language security others]
# allow engines to modify this list
engines = Rails::Engine.subclasses.map(&:instance).select { |e| e.respond_to?(:configuration) }
engines.each { |e| e.configuration(@tabs, self) }
@ -38,16 +38,16 @@ class Admin::ConfigsController < Admin::BaseController
# turn recurring rules into something palatable
def parse_recurring_selects!(config)
if config
for k in [:pickup, :boxfill, :ends] do
if config[k]
# allow clearing it using dummy value '{}' ('' would break recurring_select)
if config[k][:recurr].present? && config[k][:recurr] != '{}'
config[k][:recurr] = ActiveSupport::JSON.decode(config[k][:recurr])
config[k][:recurr] = FoodsoftDateUtil.rule_from(config[k][:recurr]).to_ical if config[k][:recurr]
else
config[k] = nil
end
return unless config
for k in %i[pickup boxfill ends] do
if config[k]
# allow clearing it using dummy value '{}' ('' would break recurring_select)
if config[k][:recurr].present? && config[k][:recurr] != '{}'
config[k][:recurr] = ActiveSupport::JSON.decode(config[k][:recurr])
config[k][:recurr] = FoodsoftDateUtil.rule_from(config[k][:recurr]).to_ical if config[k][:recurr]
else
config[k] = nil
end
end
end