focomy 0.1.109__tar.gz → 0.1.111__tar.gz

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.
Files changed (209) hide show
  1. {focomy-0.1.109 → focomy-0.1.111}/PKG-INFO +1 -1
  2. {focomy-0.1.109 → focomy-0.1.111}/core/api/forms.py +11 -5
  3. {focomy-0.1.109 → focomy-0.1.111}/pyproject.toml +1 -1
  4. {focomy-0.1.109 → focomy-0.1.111}/.gitignore +0 -0
  5. {focomy-0.1.109 → focomy-0.1.111}/LICENSE +0 -0
  6. {focomy-0.1.109 → focomy-0.1.111}/README.md +0 -0
  7. {focomy-0.1.109 → focomy-0.1.111}/core/__init__.py +0 -0
  8. {focomy-0.1.109 → focomy-0.1.111}/core/admin/__init__.py +0 -0
  9. {focomy-0.1.109 → focomy-0.1.111}/core/admin/routes.py +0 -0
  10. {focomy-0.1.109 → focomy-0.1.111}/core/admin/url.py +0 -0
  11. {focomy-0.1.109 → focomy-0.1.111}/core/api/__init__.py +0 -0
  12. {focomy-0.1.109 → focomy-0.1.111}/core/api/auth.py +0 -0
  13. {focomy-0.1.109 → focomy-0.1.111}/core/api/comments.py +0 -0
  14. {focomy-0.1.109 → focomy-0.1.111}/core/api/entities.py +0 -0
  15. {focomy-0.1.109 → focomy-0.1.111}/core/api/media.py +0 -0
  16. {focomy-0.1.109 → focomy-0.1.111}/core/api/relations.py +0 -0
  17. {focomy-0.1.109 → focomy-0.1.111}/core/api/revisions.py +0 -0
  18. {focomy-0.1.109 → focomy-0.1.111}/core/api/schema.py +0 -0
  19. {focomy-0.1.109 → focomy-0.1.111}/core/api/search.py +0 -0
  20. {focomy-0.1.109 → focomy-0.1.111}/core/api/seo.py +0 -0
  21. {focomy-0.1.109 → focomy-0.1.111}/core/cli.py +0 -0
  22. {focomy-0.1.109 → focomy-0.1.111}/core/config.py +0 -0
  23. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/__init__.py +0 -0
  24. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/audit_log.yaml +0 -0
  25. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/category.yaml +0 -0
  26. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/channel.yaml +0 -0
  27. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/comment.yaml +0 -0
  28. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/edit_lock.yaml +0 -0
  29. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/form.yaml +0 -0
  30. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/form_submission.yaml +0 -0
  31. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/menu_item.yaml +0 -0
  32. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/news.yaml +0 -0
  33. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/page.yaml +0 -0
  34. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/plugin.yaml +0 -0
  35. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/plugin_developer.yaml +0 -0
  36. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/plugin_review.yaml +0 -0
  37. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/post.yaml +0 -0
  38. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/redirect.yaml +0 -0
  39. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/scheduled_action.yaml +0 -0
  40. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/series.yaml +0 -0
  41. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/site_setting.yaml +0 -0
  42. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/tag.yaml +0 -0
  43. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/user.yaml +0 -0
  44. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/widget.yaml +0 -0
  45. {focomy-0.1.109 → focomy-0.1.111}/core/content_types/workflow_history.yaml +0 -0
  46. {focomy-0.1.109 → focomy-0.1.111}/core/database.py +0 -0
  47. {focomy-0.1.109 → focomy-0.1.111}/core/engine/__init__.py +0 -0
  48. {focomy-0.1.109 → focomy-0.1.111}/core/engine/routes.py +0 -0
  49. {focomy-0.1.109 → focomy-0.1.111}/core/main.py +0 -0
  50. {focomy-0.1.109 → focomy-0.1.111}/core/migrations/env.py +0 -0
  51. {focomy-0.1.109 → focomy-0.1.111}/core/migrations/script.py.mako +0 -0
  52. {focomy-0.1.109 → focomy-0.1.111}/core/migrations/versions/2038bdf6693b_add_import_jobs_table.py +0 -0
  53. {focomy-0.1.109 → focomy-0.1.111}/core/migrations/versions/3a1b2c3d4e5f_add_file_hash_to_media.py +0 -0
  54. {focomy-0.1.109 → focomy-0.1.111}/core/models/__init__.py +0 -0
  55. {focomy-0.1.109 → focomy-0.1.111}/core/models/auth.py +0 -0
  56. {focomy-0.1.109 → focomy-0.1.111}/core/models/entity.py +0 -0
  57. {focomy-0.1.109 → focomy-0.1.111}/core/models/import_job.py +0 -0
  58. {focomy-0.1.109 → focomy-0.1.111}/core/models/media.py +0 -0
  59. {focomy-0.1.109 → focomy-0.1.111}/core/models/relation.py +0 -0
  60. {focomy-0.1.109 → focomy-0.1.111}/core/models/revision.py +0 -0
  61. {focomy-0.1.109 → focomy-0.1.111}/core/plugins/__init__.py +0 -0
  62. {focomy-0.1.109 → focomy-0.1.111}/core/plugins/base.py +0 -0
  63. {focomy-0.1.109 → focomy-0.1.111}/core/plugins/hooks.py +0 -0
  64. {focomy-0.1.109 → focomy-0.1.111}/core/plugins/loader.py +0 -0
  65. {focomy-0.1.109 → focomy-0.1.111}/core/plugins/manager.py +0 -0
  66. {focomy-0.1.109 → focomy-0.1.111}/core/rate_limit.py +0 -0
  67. {focomy-0.1.109 → focomy-0.1.111}/core/relations.yaml +0 -0
  68. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/.env.template +0 -0
  69. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/.gitignore.template +0 -0
  70. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/__init__.py +0 -0
  71. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/config.yaml.template +0 -0
  72. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/themes/default/templates/archive.html +0 -0
  73. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/themes/default/templates/base.html +0 -0
  74. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/themes/default/templates/category.html +0 -0
  75. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/themes/default/templates/home.html +0 -0
  76. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/themes/default/templates/post.html +0 -0
  77. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/themes/default/templates/search.html +0 -0
  78. {focomy-0.1.109 → focomy-0.1.111}/core/scaffold/themes/default/theme.yaml +0 -0
  79. {focomy-0.1.109 → focomy-0.1.111}/core/schemas/__init__.py +0 -0
  80. {focomy-0.1.109 → focomy-0.1.111}/core/schemas/import_schema.py +0 -0
  81. {focomy-0.1.109 → focomy-0.1.111}/core/seo/__init__.py +0 -0
  82. {focomy-0.1.109 → focomy-0.1.111}/core/services/__init__.py +0 -0
  83. {focomy-0.1.109 → focomy-0.1.111}/core/services/api_auth.py +0 -0
  84. {focomy-0.1.109 → focomy-0.1.111}/core/services/assets.py +0 -0
  85. {focomy-0.1.109 → focomy-0.1.111}/core/services/audit.py +0 -0
  86. {focomy-0.1.109 → focomy-0.1.111}/core/services/auth.py +0 -0
  87. {focomy-0.1.109 → focomy-0.1.111}/core/services/block_converter.py +0 -0
  88. {focomy-0.1.109 → focomy-0.1.111}/core/services/bulk.py +0 -0
  89. {focomy-0.1.109 → focomy-0.1.111}/core/services/cache.py +0 -0
  90. {focomy-0.1.109 → focomy-0.1.111}/core/services/cleanup.py +0 -0
  91. {focomy-0.1.109 → focomy-0.1.111}/core/services/comment.py +0 -0
  92. {focomy-0.1.109 → focomy-0.1.111}/core/services/config_priority.py +0 -0
  93. {focomy-0.1.109 → focomy-0.1.111}/core/services/deployment.py +0 -0
  94. {focomy-0.1.109 → focomy-0.1.111}/core/services/edit_lock.py +0 -0
  95. {focomy-0.1.109 → focomy-0.1.111}/core/services/entity.py +0 -0
  96. {focomy-0.1.109 → focomy-0.1.111}/core/services/export.py +0 -0
  97. {focomy-0.1.109 → focomy-0.1.111}/core/services/field.py +0 -0
  98. {focomy-0.1.109 → focomy-0.1.111}/core/services/formula.py +0 -0
  99. {focomy-0.1.109 → focomy-0.1.111}/core/services/i18n.py +0 -0
  100. {focomy-0.1.109 → focomy-0.1.111}/core/services/index.py +0 -0
  101. {focomy-0.1.109 → focomy-0.1.111}/core/services/invite.py +0 -0
  102. {focomy-0.1.109 → focomy-0.1.111}/core/services/link_validator.py +0 -0
  103. {focomy-0.1.109 → focomy-0.1.111}/core/services/logging.py +0 -0
  104. {focomy-0.1.109 → focomy-0.1.111}/core/services/mail.py +0 -0
  105. {focomy-0.1.109 → focomy-0.1.111}/core/services/marketplace.py +0 -0
  106. {focomy-0.1.109 → focomy-0.1.111}/core/services/marketplace_verify.py +0 -0
  107. {focomy-0.1.109 → focomy-0.1.111}/core/services/media.py +0 -0
  108. {focomy-0.1.109 → focomy-0.1.111}/core/services/media_cleanup.py +0 -0
  109. {focomy-0.1.109 → focomy-0.1.111}/core/services/menu.py +0 -0
  110. {focomy-0.1.109 → focomy-0.1.111}/core/services/migration_helpers.py +0 -0
  111. {focomy-0.1.109 → focomy-0.1.111}/core/services/oauth.py +0 -0
  112. {focomy-0.1.109 → focomy-0.1.111}/core/services/pagination.py +0 -0
  113. {focomy-0.1.109 → focomy-0.1.111}/core/services/plugin_resolver.py +0 -0
  114. {focomy-0.1.109 → focomy-0.1.111}/core/services/plugin_sandbox.py +0 -0
  115. {focomy-0.1.109 → focomy-0.1.111}/core/services/preview.py +0 -0
  116. {focomy-0.1.109 → focomy-0.1.111}/core/services/query_optimizer.py +0 -0
  117. {focomy-0.1.109 → focomy-0.1.111}/core/services/rbac.py +0 -0
  118. {focomy-0.1.109 → focomy-0.1.111}/core/services/redirect.py +0 -0
  119. {focomy-0.1.109 → focomy-0.1.111}/core/services/relation.py +0 -0
  120. {focomy-0.1.109 → focomy-0.1.111}/core/services/revision.py +0 -0
  121. {focomy-0.1.109 → focomy-0.1.111}/core/services/routing.py +0 -0
  122. {focomy-0.1.109 → focomy-0.1.111}/core/services/sanitizer.py +0 -0
  123. {focomy-0.1.109 → focomy-0.1.111}/core/services/schedule.py +0 -0
  124. {focomy-0.1.109 → focomy-0.1.111}/core/services/search.py +0 -0
  125. {focomy-0.1.109 → focomy-0.1.111}/core/services/sentry.py +0 -0
  126. {focomy-0.1.109 → focomy-0.1.111}/core/services/seo.py +0 -0
  127. {focomy-0.1.109 → focomy-0.1.111}/core/services/settings.py +0 -0
  128. {focomy-0.1.109 → focomy-0.1.111}/core/services/spam_filter.py +0 -0
  129. {focomy-0.1.109 → focomy-0.1.111}/core/services/storage.py +0 -0
  130. {focomy-0.1.109 → focomy-0.1.111}/core/services/theme.py +0 -0
  131. {focomy-0.1.109 → focomy-0.1.111}/core/services/theme_inheritance.py +0 -0
  132. {focomy-0.1.109 → focomy-0.1.111}/core/services/thumbnail.py +0 -0
  133. {focomy-0.1.109 → focomy-0.1.111}/core/services/update.py +0 -0
  134. {focomy-0.1.109 → focomy-0.1.111}/core/services/widget.py +0 -0
  135. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/__init__.py +0 -0
  136. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/acf.py +0 -0
  137. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/analyzer.py +0 -0
  138. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/constants.py +0 -0
  139. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/content_sanitizer.py +0 -0
  140. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/diff_detector.py +0 -0
  141. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/dry_run.py +0 -0
  142. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/error_collector.py +0 -0
  143. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/id_resolver.py +0 -0
  144. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/import_service.py +0 -0
  145. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/importer.py +0 -0
  146. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/link_fixer.py +0 -0
  147. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/media.py +0 -0
  148. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/preview.py +0 -0
  149. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/redirects.py +0 -0
  150. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/rest_client.py +0 -0
  151. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/rollback.py +0 -0
  152. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/verification.py +0 -0
  153. {focomy-0.1.109 → focomy-0.1.111}/core/services/wordpress_import/wxr_parser.py +0 -0
  154. {focomy-0.1.109 → focomy-0.1.111}/core/services/workflow.py +0 -0
  155. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/backup.html +0 -0
  156. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/base.html +0 -0
  157. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/comments.html +0 -0
  158. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/components/editor.html +0 -0
  159. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/customize.html +0 -0
  160. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/dashboard.html +0 -0
  161. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/entity_form.html +0 -0
  162. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/entity_list.html +0 -0
  163. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/forgot_password.html +0 -0
  164. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/import.html +0 -0
  165. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/link_validator.html +0 -0
  166. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/login.html +0 -0
  167. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/media.html +0 -0
  168. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/menus.html +0 -0
  169. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/plugins.html +0 -0
  170. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/redirects.html +0 -0
  171. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/reset_password.html +0 -0
  172. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/settings.html +0 -0
  173. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/sitemap.html +0 -0
  174. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/system.html +0 -0
  175. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/themes.html +0 -0
  176. {focomy-0.1.109 → focomy-0.1.111}/core/templates/admin/widgets.html +0 -0
  177. {focomy-0.1.109 → focomy-0.1.111}/core/themes/__init__.py +0 -0
  178. {focomy-0.1.109 → focomy-0.1.111}/core/themes/customizer.py +0 -0
  179. {focomy-0.1.109 → focomy-0.1.111}/core/themes/manager.py +0 -0
  180. {focomy-0.1.109 → focomy-0.1.111}/core/themes/marketplace.py +0 -0
  181. {focomy-0.1.109 → focomy-0.1.111}/core/utils.py +0 -0
  182. {focomy-0.1.109 → focomy-0.1.111}/static/favicon.svg +0 -0
  183. {focomy-0.1.109 → focomy-0.1.111}/themes/blog/templates/base.html +0 -0
  184. {focomy-0.1.109 → focomy-0.1.111}/themes/blog/templates/home.html +0 -0
  185. {focomy-0.1.109 → focomy-0.1.111}/themes/blog/templates/post.html +0 -0
  186. {focomy-0.1.109 → focomy-0.1.111}/themes/blog/theme.yaml +0 -0
  187. {focomy-0.1.109 → focomy-0.1.111}/themes/corporate/templates/base.html +0 -0
  188. {focomy-0.1.109 → focomy-0.1.111}/themes/corporate/templates/home.html +0 -0
  189. {focomy-0.1.109 → focomy-0.1.111}/themes/corporate/templates/page.html +0 -0
  190. {focomy-0.1.109 → focomy-0.1.111}/themes/corporate/theme.yaml +0 -0
  191. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/404.html +0 -0
  192. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/500.html +0 -0
  193. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/archive.html +0 -0
  194. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/base.html +0 -0
  195. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/category.html +0 -0
  196. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/channel.html +0 -0
  197. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/form.html +63 -63
  198. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/form_success.html +0 -0
  199. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/home.html +0 -0
  200. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/page.html +0 -0
  201. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/post.html +0 -0
  202. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/search.html +0 -0
  203. {focomy-0.1.109 → focomy-0.1.111}/themes/default/templates/series.html +0 -0
  204. {focomy-0.1.109 → focomy-0.1.111}/themes/default/theme.yaml +0 -0
  205. {focomy-0.1.109 → focomy-0.1.111}/themes/minimal/templates/base.html +0 -0
  206. {focomy-0.1.109 → focomy-0.1.111}/themes/minimal/templates/home.html +0 -0
  207. {focomy-0.1.109 → focomy-0.1.111}/themes/minimal/templates/page.html +0 -0
  208. {focomy-0.1.109 → focomy-0.1.111}/themes/minimal/templates/post.html +0 -0
  209. {focomy-0.1.109 → focomy-0.1.111}/themes/minimal/theme.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: focomy
3
- Version: 0.1.109
3
+ Version: 0.1.111
4
4
  Summary: The Most Beautiful CMS - A metadata-driven, zero-duplicate-code content management system
5
5
  Project-URL: Homepage, https://github.com/focomy/focomy
6
6
  Project-URL: Documentation, https://focomy.dev/docs
@@ -9,10 +9,10 @@ from pydantic import BaseModel
9
9
  from sqlalchemy.ext.asyncio import AsyncSession
10
10
 
11
11
  from ..database import get_db
12
+ from ..engine.routes import render_template
12
13
  from ..rate_limit import limiter
13
14
  from ..services.entity import EntityService
14
15
  from ..services.mail import mail_service
15
- from ..services.theme import theme_service
16
16
  from ..utils import require_feature_async
17
17
 
18
18
  router = APIRouter(prefix="/forms", tags=["forms"])
@@ -63,8 +63,9 @@ async def view_form(
63
63
  except json.JSONDecodeError:
64
64
  steps = []
65
65
 
66
- # Render form template
67
- html = theme_service.render(
66
+ # Render form template (with admin bar context)
67
+ html = await render_template(
68
+ db,
68
69
  "form.html",
69
70
  {
70
71
  "form": form_data,
@@ -72,6 +73,9 @@ async def view_form(
72
73
  "steps": steps,
73
74
  "csrf_token": getattr(request.state, "csrf_token", ""),
74
75
  },
76
+ request=request,
77
+ entity=form,
78
+ content_type="form",
75
79
  )
76
80
 
77
81
  return HTMLResponse(content=html)
@@ -162,13 +166,15 @@ async def submit_form(
162
166
  if "application/json" in content_type:
163
167
  return {"success": True, "message": success_message}
164
168
 
165
- # Render success page
166
- html = theme_service.render(
169
+ # Render success page (with admin bar context)
170
+ html = await render_template(
171
+ db,
167
172
  "form_success.html",
168
173
  {
169
174
  "form": form_data,
170
175
  "message": success_message,
171
176
  },
177
+ request=request,
172
178
  )
173
179
 
174
180
  return HTMLResponse(content=html)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "focomy"
7
- version = "0.1.109"
7
+ version = "0.1.111"
8
8
  description = "The Most Beautiful CMS - A metadata-driven, zero-duplicate-code content management system"
9
9
  readme = "README.md"
10
10
  license = "MIT"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,68 +1,5 @@
1
1
  {% extends "base.html" %}
2
2
 
3
- {% block title %}{{ form.title }} - {{ site_name }}{% endblock %}
4
-
5
- {% block content %}
6
- <div class="form-page">
7
- <header class="form-header">
8
- <h1>{{ form.title }}</h1>
9
- {% if form.description %}
10
- <p class="form-description">{{ form.description }}</p>
11
- {% endif %}
12
- </header>
13
-
14
- <form id="dynamic-form" method="POST" action="/forms/{{ form.slug }}" class="dynamic-form">
15
- <input type="hidden" name="csrf_token" value="{{ csrf_token }}">
16
-
17
- {% if steps and steps|length > 1 %}
18
- <!-- ウィザード形式 -->
19
- <div class="wizard">
20
- <div class="wizard-progress">
21
- {% for step in steps %}
22
- <div class="wizard-step {% if loop.first %}active{% endif %}" data-step="{{ loop.index }}">
23
- <span class="step-number">{{ loop.index }}</span>
24
- <span class="step-title">{{ step.title }}</span>
25
- </div>
26
- {% endfor %}
27
- </div>
28
-
29
- {% for step in steps %}
30
- <div class="wizard-panel {% if loop.first %}active{% endif %}" data-step="{{ loop.index }}">
31
- <h2 class="step-heading">{{ step.title }}</h2>
32
- {% for field in fields %}
33
- {% if field.name in step.fields %}
34
- {{ render_field(field) }}
35
- {% endif %}
36
- {% endfor %}
37
-
38
- <div class="wizard-nav">
39
- {% if not loop.first %}
40
- <button type="button" class="btn btn-secondary prev-step">戻る</button>
41
- {% endif %}
42
- {% if loop.last %}
43
- <button type="submit" class="btn btn-primary">{{ form.submit_label or '送信する' }}</button>
44
- {% else %}
45
- <button type="button" class="btn btn-primary next-step">次へ</button>
46
- {% endif %}
47
- </div>
48
- </div>
49
- {% endfor %}
50
- </div>
51
- {% else %}
52
- <!-- 通常フォーム -->
53
- <div class="form-fields">
54
- {% for field in fields %}
55
- {{ render_field(field) }}
56
- {% endfor %}
57
- </div>
58
-
59
- <div class="form-actions">
60
- <button type="submit" class="btn btn-primary">{{ form.submit_label or '送信する' }}</button>
61
- </div>
62
- {% endif %}
63
- </form>
64
- </div>
65
-
66
3
  {% macro render_field(field) %}
67
4
  <div class="form-group">
68
5
  <label for="{{ field.name }}">
@@ -134,6 +71,69 @@
134
71
  </div>
135
72
  {% endmacro %}
136
73
 
74
+ {% block title %}{{ form.title }} - {{ site_name }}{% endblock %}
75
+
76
+ {% block content %}
77
+ <div class="form-page">
78
+ <header class="form-header">
79
+ <h1>{{ form.title }}</h1>
80
+ {% if form.description %}
81
+ <p class="form-description">{{ form.description }}</p>
82
+ {% endif %}
83
+ </header>
84
+
85
+ <form id="dynamic-form" method="POST" action="/forms/{{ form.slug }}" class="dynamic-form">
86
+ <input type="hidden" name="csrf_token" value="{{ csrf_token }}">
87
+
88
+ {% if steps and steps|length > 1 %}
89
+ <!-- ウィザード形式 -->
90
+ <div class="wizard">
91
+ <div class="wizard-progress">
92
+ {% for step in steps %}
93
+ <div class="wizard-step {% if loop.first %}active{% endif %}" data-step="{{ loop.index }}">
94
+ <span class="step-number">{{ loop.index }}</span>
95
+ <span class="step-title">{{ step.title }}</span>
96
+ </div>
97
+ {% endfor %}
98
+ </div>
99
+
100
+ {% for step in steps %}
101
+ <div class="wizard-panel {% if loop.first %}active{% endif %}" data-step="{{ loop.index }}">
102
+ <h2 class="step-heading">{{ step.title }}</h2>
103
+ {% for field in fields %}
104
+ {% if field.name in step.fields %}
105
+ {{ render_field(field) }}
106
+ {% endif %}
107
+ {% endfor %}
108
+
109
+ <div class="wizard-nav">
110
+ {% if not loop.first %}
111
+ <button type="button" class="btn btn-secondary prev-step">戻る</button>
112
+ {% endif %}
113
+ {% if loop.last %}
114
+ <button type="submit" class="btn btn-primary">{{ form.submit_label or '送信する' }}</button>
115
+ {% else %}
116
+ <button type="button" class="btn btn-primary next-step">次へ</button>
117
+ {% endif %}
118
+ </div>
119
+ </div>
120
+ {% endfor %}
121
+ </div>
122
+ {% else %}
123
+ <!-- 通常フォーム -->
124
+ <div class="form-fields">
125
+ {% for field in fields %}
126
+ {{ render_field(field) }}
127
+ {% endfor %}
128
+ </div>
129
+
130
+ <div class="form-actions">
131
+ <button type="submit" class="btn btn-primary">{{ form.submit_label or '送信する' }}</button>
132
+ </div>
133
+ {% endif %}
134
+ </form>
135
+ </div>
136
+
137
137
  <style>
138
138
  .form-page {
139
139
  max-width: 600px;