diff --git a/jcloud/jcloud/pagetype/local_app/__init__.py b/jcloud/jcloud/pagetype/local_app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/jcloud/jcloud/pagetype/local_app/local_app.js b/jcloud/jcloud/pagetype/local_app/local_app.js new file mode 100644 index 0000000..ada04cd --- /dev/null +++ b/jcloud/jcloud/pagetype/local_app/local_app.js @@ -0,0 +1,8 @@ +// Copyright (c) 2025, Jingrow and contributors +// For license information, please see license.txt + +// jingrow.ui.form.on("Local App", { +// refresh(frm) { + +// }, +// }); diff --git a/jcloud/jcloud/pagetype/local_app/local_app.json b/jcloud/jcloud/pagetype/local_app/local_app.json new file mode 100644 index 0000000..12a405e --- /dev/null +++ b/jcloud/jcloud/pagetype/local_app/local_app.json @@ -0,0 +1,151 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2025-10-22 15:50:31.087391", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "title", + "enabled", + "column_break_5", + "category", + "public", + "section_break_9", + "url", + "branch", + "repo_owner", + "repo", + "column_break_wbyw", + "team", + "installation", + "enable_auto_deploy", + "skip_review" + ], + "fields": [ + { + "fieldname": "branch", + "fieldtype": "Data", + "label": "Branch", + "set_only_once": 1 + }, + { + "fieldname": "url", + "fieldtype": "Data", + "label": "Repository URL", + "set_only_once": 1 + }, + { + "fieldname": "repo_owner", + "fieldtype": "Data", + "hidden": 1, + "label": "Repository Owner" + }, + { + "fieldname": "team", + "fieldtype": "Link", + "label": "Team", + "options": "Team" + }, + { + "fieldname": "installation", + "fieldtype": "Data", + "hidden": 1, + "label": "Installation" + }, + { + "default": "0", + "fieldname": "public", + "fieldtype": "Check", + "label": "Public" + }, + { + "fieldname": "repo", + "fieldtype": "Data", + "hidden": 1, + "label": "Repository" + }, + { + "fieldname": "column_break_5", + "fieldtype": "Column Break" + }, + { + "fieldname": "section_break_9", + "fieldtype": "Section Break" + }, + { + "default": "0", + "fieldname": "enable_auto_deploy", + "fieldtype": "Check", + "hidden": 1, + "label": "Enable Auto Deploy" + }, + { + "default": "0", + "fieldname": "skip_review", + "fieldtype": "Check", + "hidden": 1, + "label": "Skip Review" + }, + { + "default": "1", + "fieldname": "enabled", + "fieldtype": "Check", + "label": "Enabled" + }, + { + "fieldname": "title", + "fieldtype": "Data", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Title", + "reqd": 1 + }, + { + "fieldname": "category", + "fieldtype": "Link", + "label": "Category", + "options": "Marketplace App Category" + }, + { + "fieldname": "column_break_wbyw", + "fieldtype": "Column Break" + } + ], + "links": [], + "modified": "2025-10-22 18:10:13.615747", + "modified_by": "Administrator", + "module": "Jcloud", + "name": "Local App", + "owner": "Administrator", + "pagetype": "PageType", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + }, + { + "create": 1, + "read": 1, + "role": "Jcloud Admin" + }, + { + "create": 1, + "read": 1, + "role": "Jcloud Member" + } + ], + "row_format": "Dynamic", + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "title_field": "title", + "track_changes": 1 +} \ No newline at end of file diff --git a/jcloud/jcloud/pagetype/local_app/local_app.py b/jcloud/jcloud/pagetype/local_app/local_app.py new file mode 100644 index 0000000..9e37106 --- /dev/null +++ b/jcloud/jcloud/pagetype/local_app/local_app.py @@ -0,0 +1,30 @@ +# Copyright (c) 2025, Jingrow and contributors +# For license information, please see license.txt + +# import jingrow +from jingrow.model.page import Page + + +class LocalApp(Page): + # begin: auto-generated types + # This code is auto-generated. Do not modify anything in this block. + + from typing import TYPE_CHECKING + + if TYPE_CHECKING: + from jingrow.types import DF + + branch: DF.Data | None + category: DF.Link | None + enable_auto_deploy: DF.Check + enabled: DF.Check + installation: DF.Data | None + public: DF.Check + repo: DF.Data | None + repo_owner: DF.Data | None + skip_review: DF.Check + team: DF.Link | None + title: DF.Data + url: DF.Data | None + # end: auto-generated types + pass diff --git a/jcloud/jcloud/pagetype/local_app/test_local_app.py b/jcloud/jcloud/pagetype/local_app/test_local_app.py new file mode 100644 index 0000000..56fd35d --- /dev/null +++ b/jcloud/jcloud/pagetype/local_app/test_local_app.py @@ -0,0 +1,9 @@ +# Copyright (c) 2025, Jingrow and Contributors +# See license.txt + +# import jingrow +from jingrow.tests.utils import JingrowTestCase + + +class TestLocalApp(JingrowTestCase): + pass diff --git a/jcloud/jcloud/pagetype/local_marketplace/__init__.py b/jcloud/jcloud/pagetype/local_marketplace/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/jcloud/jcloud/pagetype/local_marketplace/local_marketplace.js b/jcloud/jcloud/pagetype/local_marketplace/local_marketplace.js new file mode 100644 index 0000000..03b3525 --- /dev/null +++ b/jcloud/jcloud/pagetype/local_marketplace/local_marketplace.js @@ -0,0 +1,8 @@ +// Copyright (c) 2025, Jingrow and contributors +// For license information, please see license.txt + +// jingrow.ui.form.on("Local Marketplace", { +// refresh(frm) { + +// }, +// }); diff --git a/jcloud/jcloud/pagetype/local_marketplace/local_marketplace.json b/jcloud/jcloud/pagetype/local_marketplace/local_marketplace.json new file mode 100644 index 0000000..82f188d --- /dev/null +++ b/jcloud/jcloud/pagetype/local_marketplace/local_marketplace.json @@ -0,0 +1,458 @@ +{ + "actions": [], + "allow_guest_to_view": 1, + "allow_rename": 1, + "creation": "2024-12-19 10:00:00", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "image", + "app", + "title", + "column_break_3", + "team", + "route", + "section_break_7", + "jingrow_approved", + "subscription_type", + "subscription_level", + "column_break_10", + "categories", + "published", + "section_break_5", + "sources", + "descriptions_tab", + "description", + "app_screenshots_section", + "screenshots", + "section_break_15", + "long_description", + "links_section", + "website", + "support", + "documentation", + "column_break_16", + "privacy_policy", + "terms_of_service", + "saas_tab", + "outgoing_email", + "outgoing_sender_name", + "signup_email_template_section", + "message", + "column_break_32", + "signature", + "column_break_30", + "subject", + "poll_method", + "column_break_33", + "custom_verify_template", + "subscription_update_hook", + "site_config_section", + "site_config", + "scripts_tab", + "run_after_install_script", + "after_install_script", + "run_after_uninstall_script", + "after_uninstall_script", + "review_tab", + "stop_auto_review", + "review_stage", + "status", + "dashboard_tab", + "onboarding_related_section", + "show_for_site_creation", + "localisation_apps", + "section_break_tlpw", + "average_rating" + ], + "fields": [ + { + "fieldname": "image", + "fieldtype": "Attach Image", + "hidden": 1, + "label": "Image" + }, + { + "fetch_from": "app.title", + "fetch_if_empty": 1, + "fieldname": "title", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Title", + "reqd": 1 + }, + { + "fieldname": "column_break_3", + "fieldtype": "Column Break" + }, + { + "default": "Draft", + "fieldname": "status", + "fieldtype": "Select", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Status", + "options": "Draft\nPublished\nIn Review\nAttention Required\nRejected\nDisabled" + }, + { + "fieldname": "section_break_5", + "fieldtype": "Section Break" + }, + { + "default": "Please add a short description about your app here...", + "fieldname": "description", + "fieldtype": "Small Text", + "in_list_view": 1, + "label": "Description", + "reqd": 1 + }, + { + "fieldname": "long_description", + "fieldtype": "Text Editor", + "label": "Long Description" + }, + { + "fieldname": "links_section", + "fieldtype": "Tab Break", + "label": "Support Links" + }, + { + "fieldname": "website", + "fieldtype": "Data", + "label": "Website", + "options": "URL" + }, + { + "fieldname": "support", + "fieldtype": "Data", + "label": "Support", + "options": "URL" + }, + { + "fieldname": "privacy_policy", + "fieldtype": "Data", + "label": "Privacy Policy", + "options": "URL" + }, + { + "fieldname": "documentation", + "fieldtype": "Data", + "label": "Documentation", + "options": "URL" + }, + { + "fieldname": "terms_of_service", + "fieldtype": "Data", + "label": "Terms of Service", + "options": "URL" + }, + { + "fieldname": "route", + "fieldtype": "Data", + "label": "Route" + }, + { + "default": "0", + "fieldname": "published", + "fieldtype": "Check", + "hidden": 1, + "label": "Published", + "read_only": 1 + }, + { + "fieldname": "app", + "fieldtype": "Link", + "label": "App", + "options": "App", + "reqd": 1, + "unique": 1 + }, + { + "fieldname": "column_break_16", + "fieldtype": "Column Break" + }, + { + "fieldname": "team", + "fieldtype": "Link", + "in_standard_filter": 1, + "label": "Team", + "options": "Team" + }, + { + "fieldname": "sources", + "fieldtype": "Table", + "label": "Sources", + "options": "Marketplace App Version" + }, + { + "fieldname": "app_screenshots_section", + "fieldtype": "Section Break", + "label": "App Screenshots" + }, + { + "fieldname": "screenshots", + "fieldtype": "Table", + "label": "Screenshots", + "options": "Marketplace App Screenshot" + }, + { + "fieldname": "section_break_15", + "fieldtype": "Section Break" + }, + { + "fieldname": "categories", + "fieldtype": "Table", + "label": "Categories", + "options": "Marketplace App Categories" + }, + { + "default": "Free", + "fieldname": "subscription_type", + "fieldtype": "Select", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Subscription Type", + "options": "Free\nPaid\nFreemium" + }, + { + "fieldname": "signup_email_template_section", + "fieldtype": "Section Break", + "label": "Signup Email Template" + }, + { + "default": "0", + "fieldname": "custom_verify_template", + "fieldtype": "Check", + "label": "Use custom verify template" + }, + { + "fieldname": "subject", + "fieldtype": "Data", + "label": "Subject" + }, + { + "fieldname": "message", + "fieldtype": "Text Editor", + "label": "Message" + }, + { + "fieldname": "signature", + "fieldtype": "Text Editor", + "label": "Signature" + }, + { + "fieldname": "poll_method", + "fieldtype": "Data", + "label": "Poll Method" + }, + { + "fieldname": "subscription_update_hook", + "fieldtype": "Data", + "label": "Subscription Update Hook" + }, + { + "fieldname": "saas_tab", + "fieldtype": "Tab Break", + "label": "SaaS" + }, + { + "fieldname": "column_break_32", + "fieldtype": "Column Break" + }, + { + "fieldname": "column_break_30", + "fieldtype": "Section Break" + }, + { + "fieldname": "column_break_33", + "fieldtype": "Column Break" + }, + { + "fieldname": "descriptions_tab", + "fieldtype": "Tab Break", + "label": "Descriptions" + }, + { + "fieldname": "section_break_7", + "fieldtype": "Section Break" + }, + { + "fieldname": "column_break_10", + "fieldtype": "Column Break" + }, + { + "fieldname": "outgoing_email", + "fieldtype": "Data", + "label": "Outgoing Email" + }, + { + "fieldname": "outgoing_sender_name", + "fieldtype": "Data", + "label": "Outgoing Sender Name" + }, + { + "fieldname": "scripts_tab", + "fieldtype": "Tab Break", + "label": "Scripts" + }, + { + "fieldname": "after_install_script", + "fieldtype": "Code", + "label": "After Install Script", + "options": "Python" + }, + { + "fieldname": "after_uninstall_script", + "fieldtype": "Code", + "label": "After Uninstall Script", + "options": "Python" + }, + { + "default": "0", + "fieldname": "run_after_install_script", + "fieldtype": "Check", + "label": "Rut After Install Script" + }, + { + "default": "0", + "fieldname": "run_after_uninstall_script", + "fieldtype": "Check", + "label": "Run After Uninstall Script" + }, + { + "fieldname": "review_tab", + "fieldtype": "Tab Break", + "label": "Review" + }, + { + "default": "Not Started", + "fieldname": "review_stage", + "fieldtype": "Select", + "in_list_view": 1, + "label": "Review Stage", + "options": "Not Started\nDescription Missing\nLogo Missing\nApp Release Not Reviewed\nReady for Review\nReady to Publish\nRejected" + }, + { + "default": "0", + "fieldname": "jingrow_approved", + "fieldtype": "Check", + "label": "Jingrow Approved" + }, + { + "default": "0", + "fieldname": "stop_auto_review", + "fieldtype": "Check", + "label": "Stop Auto Review" + }, + { + "description": "This keys are added to site config on saas signup", + "fieldname": "site_config", + "fieldtype": "JSON", + "label": "Site Config" + }, + { + "fieldname": "site_config_section", + "fieldtype": "Section Break", + "label": "Site Config" + }, + { + "fieldname": "onboarding_related_section", + "fieldtype": "Section Break", + "label": "Onboarding/Site Creation Related" + }, + { + "default": "0", + "fieldname": "show_for_site_creation", + "fieldtype": "Check", + "label": "Show for site creation" + }, + { + "fieldname": "dashboard_tab", + "fieldtype": "Tab Break", + "label": "Dashboard" + }, + { + "fieldname": "section_break_tlpw", + "fieldtype": "Section Break" + }, + { + "default": "0", + "fieldname": "average_rating", + "fieldtype": "Float", + "hidden": 1, + "label": "Average Rating", + "precision": "2" + }, + { + "fieldname": "localisation_apps", + "fieldtype": "Table", + "label": "Localisation Apps", + "options": "Marketplace Localisation App" + }, + { + "default": "1", + "fieldname": "subscription_level", + "fieldtype": "Select", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Subscription Level", + "options": "1\n2\n3\n4\n5" + } + ], + "has_web_view": 1, + "image_field": "image", + "index_web_pages_for_search": 1, + "is_published_field": "published", + "links": [ + { + "group": "General", + "link_fieldname": "marketplace_app", + "link_pagetype": "App Release Approval Request" + }, + { + "group": "App Subscription", + "link_fieldname": "app", + "link_pagetype": "Marketplace App Plan" + }, + { + "group": "App Subscription", + "link_fieldname": "app", + "link_pagetype": "Marketplace App Subscription" + } + ], + "modified": "2025-10-22 15:50:31.087391", + "modified_by": "Administrator", + "module": "Jcloud", + "name": "Local Marketplace", + "owner": "Administrator", + "pagetype": "PageType", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "row_format": "Dynamic", + "sort_field": "modified", + "sort_order": "DESC", + "states": [ + { + "color": "Gray", + "title": "Draft" + }, + { + "color": "Green", + "title": "Published" + } + ], + "title_field": "title", + "track_changes": 1 +} \ No newline at end of file diff --git a/jcloud/jcloud/pagetype/local_marketplace/local_marketplace.py b/jcloud/jcloud/pagetype/local_marketplace/local_marketplace.py new file mode 100644 index 0000000..994cc60 --- /dev/null +++ b/jcloud/jcloud/pagetype/local_marketplace/local_marketplace.py @@ -0,0 +1,60 @@ +# Copyright (c) 2025, Jingrow and contributors +# For license information, please see license.txt + +# import jingrow +from jingrow.model.page import Page + + +class LocalMarketplace(Page): + # begin: auto-generated types + # This code is auto-generated. Do not modify anything in this block. + + from typing import TYPE_CHECKING + + if TYPE_CHECKING: + from jcloud.jcloud.pagetype.marketplace_app_categories.marketplace_app_categories import MarketplaceAppCategories + from jcloud.jcloud.pagetype.marketplace_app_screenshot.marketplace_app_screenshot import MarketplaceAppScreenshot + from jcloud.jcloud.pagetype.marketplace_app_version.marketplace_app_version import MarketplaceAppVersion + from jcloud.jcloud.pagetype.marketplace_localisation_app.marketplace_localisation_app import MarketplaceLocalisationApp + from jingrow.types import DF + + after_install_script: DF.Code | None + after_uninstall_script: DF.Code | None + app: DF.Link + average_rating: DF.Float + categories: DF.Table[MarketplaceAppCategories] + custom_verify_template: DF.Check + description: DF.SmallText + documentation: DF.Data | None + image: DF.AttachImage | None + jingrow_approved: DF.Check + localisation_apps: DF.Table[MarketplaceLocalisationApp] + long_description: DF.TextEditor | None + message: DF.TextEditor | None + outgoing_email: DF.Data | None + outgoing_sender_name: DF.Data | None + poll_method: DF.Data | None + privacy_policy: DF.Data | None + published: DF.Check + review_stage: DF.Literal["Not Started", "Description Missing", "Logo Missing", "App Release Not Reviewed", "Ready for Review", "Ready to Publish", "Rejected"] + route: DF.Data | None + run_after_install_script: DF.Check + run_after_uninstall_script: DF.Check + screenshots: DF.Table[MarketplaceAppScreenshot] + show_for_site_creation: DF.Check + signature: DF.TextEditor | None + site_config: DF.JSON | None + sources: DF.Table[MarketplaceAppVersion] + status: DF.Literal["Draft", "Published", "In Review", "Attention Required", "Rejected", "Disabled"] + stop_auto_review: DF.Check + subject: DF.Data | None + subscription_level: DF.Literal["1", "2", "3", "4", "5"] + subscription_type: DF.Literal["Free", "Paid", "Freemium"] + subscription_update_hook: DF.Data | None + support: DF.Data | None + team: DF.Link | None + terms_of_service: DF.Data | None + title: DF.Data + website: DF.Data | None + # end: auto-generated types + pass diff --git a/jcloud/jcloud/pagetype/local_marketplace/templates/local_marketplace.html b/jcloud/jcloud/pagetype/local_marketplace/templates/local_marketplace.html new file mode 100644 index 0000000..db12309 --- /dev/null +++ b/jcloud/jcloud/pagetype/local_marketplace/templates/local_marketplace.html @@ -0,0 +1,7 @@ +{% extends "templates/web.html" %} + +{% block page_content %} +

{{ title }}

+{% endblock %} + + \ No newline at end of file diff --git a/jcloud/jcloud/pagetype/local_marketplace/templates/local_marketplace_row.html b/jcloud/jcloud/pagetype/local_marketplace/templates/local_marketplace_row.html new file mode 100644 index 0000000..8ef1ac6 --- /dev/null +++ b/jcloud/jcloud/pagetype/local_marketplace/templates/local_marketplace_row.html @@ -0,0 +1,4 @@ +
+ {{ pg.title or pg.name }} +
+ diff --git a/jcloud/jcloud/pagetype/local_marketplace/test_local_marketplace.py b/jcloud/jcloud/pagetype/local_marketplace/test_local_marketplace.py new file mode 100644 index 0000000..6ec48c1 --- /dev/null +++ b/jcloud/jcloud/pagetype/local_marketplace/test_local_marketplace.py @@ -0,0 +1,9 @@ +# Copyright (c) 2025, Jingrow and Contributors +# See license.txt + +# import jingrow +from jingrow.tests.utils import JingrowTestCase + + +class TestLocalMarketplace(JingrowTestCase): + pass