formstrap 0.4.8 → 0.4.10

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.
@@ -0,0 +1,22 @@
1
+ class Formstrap::AiController < FormstrapController
2
+ require "openai"
3
+ skip_before_action :verify_authenticity_token
4
+
5
+ def create
6
+ client = OpenAI::Client.new(
7
+ access_token: Formstrap.configuration.open_ai_key
8
+ )
9
+
10
+ data = JSON.parse(params["data"])
11
+
12
+ response = client.chat(
13
+ parameters: {
14
+ model: "gpt-4o",
15
+ messages: data["messages"],
16
+ temperature: 0.7
17
+ }
18
+ )
19
+
20
+ render json: response.to_json
21
+ end
22
+ end
@@ -16,7 +16,8 @@ module Formstrap
16
16
  end
17
17
 
18
18
  def redactor_options
19
- default_redactor_options.deep_merge(redactor || {})
19
+ ro = ai ? default_redactor_options.deep_merge(ai_redactor_options) : default_redactor_options
20
+ ro.deep_merge(redactor || {})
20
21
  end
21
22
 
22
23
  def default_redactor_options
@@ -46,10 +47,32 @@ module Formstrap
46
47
  # Options in toolbar on the right
47
48
  extrabar: %w[],
48
49
  # Options in toolbar on the left
49
- toolbar: %w[format bold italic deleted list table link html]
50
+ toolbar: %w[format bold italic deleted list table link html ai-tools]
50
51
  },
51
- plugins: %w[emoji linkstyles]
52
+ plugins: %w[emoji linkstyles ai]
52
53
  }.delete_if { |k, v| v.nil? }
53
54
  end
55
+
56
+ def ai
57
+ @ai.present? ? @ai : Formstrap.configuration.ai
58
+ end
59
+
60
+ def ai_redactor_options
61
+ {
62
+ ai: {
63
+ items: {
64
+ set: true,
65
+ fix: {title: I18n.t("redactor.ai.fix"), command: "ai.set", params: {prompt: "You are a professional copy writer. Each command requires a best effort result. Don’t ask questions, only return the improved text. Fix any grammatical or spelling mistakes in the language of the text that is provided."}},
66
+ translate: {title: I18n.t("redactor.ai.translate"), command: "ai.popupTranslate"}
67
+ },
68
+ translate: I18n.available_locales.map { |locale| I18n.t("languages.#{locale}") },
69
+ text: {
70
+ url: "/formstrap/ai",
71
+ model: "gpt-4o",
72
+ stream: false
73
+ }
74
+ }
75
+ }
76
+ end
54
77
  end
55
78
  end
@@ -1,5 +1,10 @@
1
1
  de:
2
2
  language_name: Deutsch
3
+ languages:
4
+ de: Deutsch
5
+ en: Englisch
6
+ fr: Französisch
7
+ nl: Holländisch
3
8
  date:
4
9
  formats:
5
- default: "%d/%m/%Y"
10
+ default: "%d/%m/%Y"
@@ -1,5 +1,10 @@
1
1
  en:
2
2
  language_name: English
3
+ languages:
4
+ de: German
5
+ en: English
6
+ fr: French
7
+ nl: Dutch
3
8
  date:
4
9
  formats:
5
- default: "%d/%m/%Y"
10
+ default: "%d/%m/%Y"
@@ -46,3 +46,7 @@ de:
46
46
  title: "%{model} bearbeiten"
47
47
  thumbnail:
48
48
  title: Titel
49
+ redactor:
50
+ ai:
51
+ fix: Verbessern
52
+ translate: Übersetzen
@@ -46,3 +46,7 @@ en:
46
46
  title: "Edit %{model}"
47
47
  thumbnail:
48
48
  title: Title
49
+ redactor:
50
+ ai:
51
+ fix: Fix
52
+ translate: Translate
@@ -46,3 +46,7 @@ fr:
46
46
  title: "Modifier %{model}"
47
47
  thumbnail:
48
48
  title: Titre
49
+ redactor:
50
+ ai:
51
+ fix: Améliorer
52
+ translate: Traduire
@@ -46,3 +46,7 @@ nl:
46
46
  title: "%{model} bewerken"
47
47
  thumbnail:
48
48
  title: Titel
49
+ redactor:
50
+ ai:
51
+ fix: Verbeter
52
+ translate: Vertalen
@@ -1,5 +1,10 @@
1
1
  fr:
2
2
  language_name: Français
3
+ languages:
4
+ de: Allemand
5
+ en: Anglais
6
+ fr: Français
7
+ nl: Néerlandais
3
8
  date:
4
9
  formats:
5
- default: "%d/%m/%Y"
10
+ default: "%d/%m/%Y"
@@ -1,5 +1,10 @@
1
1
  nl:
2
2
  language_name: Nederlands
3
+ languages:
4
+ nl: Nederlands
5
+ fr: Frans
6
+ en: Engels
7
+ de: Duits
3
8
  date:
4
9
  formats:
5
- default: "%d/%m/%Y"
10
+ default: "%d/%m/%Y"
data/config/routes.rb CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  Rails.application.routes.draw do
4
4
  namespace(:formstrap) do
5
+ # AI
6
+ post "ai", to: "ai#create"
7
+
8
+ # Media
5
9
  get "media", to: "media#index", as: :media
6
10
  post "media", to: "media#create", as: :new_media
7
11
  get "media/thumbnail/:id", to: "media#thumbnail", as: :media_item_thumbnail
@@ -0,0 +1,11 @@
1
+ module Formstrap
2
+ class Configuration
3
+ attr_accessor :open_ai_key
4
+ attr_accessor :ai
5
+
6
+ def initialize
7
+ @open_ai_key = ""
8
+ @ai = false
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Formstrap
2
- VERSION = "0.4.8"
2
+ VERSION = "0.4.10"
3
3
  end
data/lib/formstrap.rb CHANGED
@@ -1,6 +1,15 @@
1
1
  require_relative "formstrap/version"
2
2
  require_relative "formstrap/engine"
3
+ require_relative "formstrap/configuration"
3
4
 
4
5
  # Formstrap
5
6
  require "formstrap/form_builder"
6
7
  require "formstrap/form_helper"
8
+
9
+ module Formstrap
10
+ mattr_accessor :configuration, default: Formstrap::Configuration.new
11
+
12
+ def self.configure
13
+ yield configuration if block_given?
14
+ end
15
+ end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontierdotbe/formstrap",
3
- "version": "0.4.8",
3
+ "version": "0.4.9",
4
4
  "description": "Bootstrap-powered Form Helpers",
5
5
  "module": "app/assets/javascripts/formstrap.js",
6
6
  "main": "app/assets/javascripts/formstrap.js",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.8
4
+ version: 0.4.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jef Vlamings
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-13 00:00:00.000000000 Z
11
+ date: 2025-03-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: An extensive Bootstrap form library to power your Ruby On Rails application.
14
14
  email:
@@ -57,6 +57,7 @@ files:
57
57
  - app/assets/javascripts/formstrap/vendor/redactor/i18n/fr.js
58
58
  - app/assets/javascripts/formstrap/vendor/redactor/i18n/nl.js
59
59
  - app/assets/javascripts/formstrap/vendor/redactor/index.js
60
+ - app/assets/javascripts/formstrap/vendor/redactor/plugins/ai.js
60
61
  - app/assets/javascripts/formstrap/vendor/redactor/plugins/emoji.js
61
62
  - app/assets/javascripts/formstrap/vendor/redactor/plugins/linkstyles.js
62
63
  - app/assets/stylesheets/formstrap.css
@@ -79,6 +80,7 @@ files:
79
80
  - app/assets/stylesheets/formstrap/vendor/overrides/redactor.scss
80
81
  - app/assets/stylesheets/formstrap/vendor/tom-select-bootstrap.scss
81
82
  - app/controllers/concerns/formstrap/pagination.rb
83
+ - app/controllers/formstrap/ai_controller.rb
82
84
  - app/controllers/formstrap/media_controller.rb
83
85
  - app/controllers/formstrap_controller.rb
84
86
  - app/helpers/application_helper.rb
@@ -189,6 +191,7 @@ files:
189
191
  - formstrap.gemspec
190
192
  - formstrap.iml
191
193
  - lib/formstrap.rb
194
+ - lib/formstrap/configuration.rb
192
195
  - lib/formstrap/engine.rb
193
196
  - lib/formstrap/form_builder.rb
194
197
  - lib/formstrap/form_helper.rb