@saltcorn/server 1.1.4-beta.8 → 1.1.4
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.
- package/CHANGELOG.md +14 -0
- package/auth/admin.js +24 -1
- package/auth/resetpw.js +1 -1
- package/auth/routes.js +57 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/_saltcorn_common_code.Relation.html +31 -9
- package/docs/classes/_saltcorn_common_code.RelationsFinder.html +5 -5
- package/docs/classes/_saltcorn_data.models.Crash-1.html +18 -18
- package/docs/classes/_saltcorn_data.models.EventLog-1.html +19 -19
- package/docs/classes/_saltcorn_data.models.Field.html +71 -71
- package/docs/classes/_saltcorn_data.models.FieldRepeat-1.html +17 -17
- package/docs/classes/_saltcorn_data.models.File-1.html +48 -48
- package/docs/classes/_saltcorn_data.models.Form-1.html +38 -38
- package/docs/classes/_saltcorn_data.models.Library.html +13 -13
- package/docs/classes/_saltcorn_data.models.Page.html +24 -24
- package/docs/classes/_saltcorn_data.models.PageGroup-1.html +25 -25
- package/docs/classes/_saltcorn_data.models.Plugin.html +25 -25
- package/docs/classes/_saltcorn_data.models.Role.html +9 -9
- package/docs/classes/_saltcorn_data.models.Table-1.html +96 -96
- package/docs/classes/_saltcorn_data.models.TableConstraint-1.html +14 -14
- package/docs/classes/_saltcorn_data.models.Trigger.html +36 -36
- package/docs/classes/_saltcorn_data.models.User-1.html +48 -48
- package/docs/classes/_saltcorn_data.models.View-1.html +52 -52
- package/docs/classes/_saltcorn_data.models.Workflow-1.html +17 -17
- package/docs/classes/_saltcorn_data.models.WorkflowRun.html +35 -35
- package/docs/classes/_saltcorn_data.models.WorkflowStep.html +25 -25
- package/docs/classes/_saltcorn_data.models.WorkflowTrace.html +18 -18
- package/docs/classes/_saltcorn_mobile_builder.MobileBuilder.html +36 -36
- package/docs/enums/_saltcorn_common_code.RelationType.html +7 -7
- package/docs/enums/_saltcorn_common_code.ViewDisplayType.html +4 -4
- package/docs/functions/_saltcorn_admin_models.backup.create_backup.html +1 -1
- package/docs/functions/_saltcorn_admin_models.backup.create_csv_from_rows.html +1 -1
- package/docs/functions/_saltcorn_admin_models.backup.restore.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.add_to_menu.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.can_install_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.fetch_available_packs.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.fetch_pack_by_name.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.install_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.library_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.model_instance_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.model_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.page_group_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.page_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.plugin_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.role_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.table_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.trigger_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.uninstall_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.pack.view_pack.html +1 -1
- package/docs/functions/_saltcorn_admin_models.tenant.copy_tenant_template.html +1 -1
- package/docs/functions/_saltcorn_admin_models.tenant.create_tenant.html +1 -1
- package/docs/functions/_saltcorn_admin_models.tenant.deleteTenant.html +1 -1
- package/docs/functions/_saltcorn_admin_models.tenant.domain_sanitize.html +1 -1
- package/docs/functions/_saltcorn_admin_models.tenant.eachTenant.html +1 -1
- package/docs/functions/_saltcorn_admin_models.tenant.getAllTenantRows.html +1 -1
- package/docs/functions/_saltcorn_admin_models.tenant.getAllTenants.html +1 -1
- package/docs/functions/_saltcorn_admin_models.tenant.insertTenant.html +1 -1
- package/docs/functions/_saltcorn_admin_models.tenant.switchToTenant.html +1 -1
- package/docs/functions/_saltcorn_common_code.buildTableCaches.html +1 -1
- package/docs/functions/_saltcorn_common_code.parseLegacyRelation.html +1 -1
- package/docs/functions/_saltcorn_common_code.parseRelationPath.html +1 -1
- package/docs/functions/_saltcorn_data.models.config.check_email_mask.html +1 -1
- package/docs/functions/_saltcorn_data.models.config.deleteConfig.html +1 -1
- package/docs/functions/_saltcorn_data.models.config.getAllConfig.html +1 -1
- package/docs/functions/_saltcorn_data.models.config.getConfig.html +1 -1
- package/docs/functions/_saltcorn_data.models.config.get_base_url.html +1 -1
- package/docs/functions/_saltcorn_data.models.config.get_latest_npm_version.html +1 -1
- package/docs/functions/_saltcorn_data.models.config.remove_from_menu.html +1 -1
- package/docs/functions/_saltcorn_data.models.config.save_menu_items.html +1 -1
- package/docs/functions/_saltcorn_data.models.config.setConfig.html +1 -1
- package/docs/functions/_saltcorn_data.models.discovery.discover_tables.html +1 -1
- package/docs/functions/_saltcorn_data.models.discovery.discoverable_tables.html +1 -1
- package/docs/functions/_saltcorn_data.models.discovery.findType.html +3 -3
- package/docs/functions/_saltcorn_data.models.discovery.get_existing_views.html +1 -1
- package/docs/functions/_saltcorn_data.models.discovery.implement_discovery.html +1 -1
- package/docs/functions/_saltcorn_data.models.email.getMailTransport.html +3 -3
- package/docs/functions/_saltcorn_data.models.email.send_verification_email.html +1 -1
- package/docs/functions/_saltcorn_data.models.email.viewToEmailHtml.html +1 -1
- package/docs/functions/_saltcorn_data.models.expression.apply_calculated_fields.html +1 -1
- package/docs/functions/_saltcorn_data.models.expression.apply_calculated_fields_stored.html +1 -1
- package/docs/functions/_saltcorn_data.models.expression.eval_expression.html +1 -1
- package/docs/functions/_saltcorn_data.models.expression.expressionValidator.html +1 -1
- package/docs/functions/_saltcorn_data.models.expression.get_async_expression_function.html +1 -1
- package/docs/functions/_saltcorn_data.models.expression.get_expression_function.html +1 -1
- package/docs/functions/_saltcorn_data.models.expression.jsexprToWhere.html +1 -1
- package/docs/functions/_saltcorn_data.models.expression.recalculate_for_stored.html +1 -1
- package/docs/functions/_saltcorn_data.models.expression.transform_for_async.html +1 -1
- package/docs/functions/_saltcorn_data.models.layout.eachView.html +1 -1
- package/docs/functions/_saltcorn_data.models.layout.getStringsForI18n.html +1 -1
- package/docs/functions/_saltcorn_data.models.layout.getViews.html +1 -1
- package/docs/functions/_saltcorn_data.models.layout.translateLayout.html +1 -1
- package/docs/functions/_saltcorn_data.models.layout.traverse.html +1 -1
- package/docs/functions/_saltcorn_data.models.layout.traverseSync.html +1 -1
- package/docs/functions/_saltcorn_data.models.random.all_views.html +1 -1
- package/docs/functions/_saltcorn_data.models.random.fill_table_row.html +1 -1
- package/docs/functions/_saltcorn_data.models.random.initial_view.html +1 -1
- package/docs/functions/_saltcorn_data.models.random.random_table.html +1 -1
- package/docs/functions/_saltcorn_db_common.buildInsertBulkSql.html +1 -1
- package/docs/functions/_saltcorn_db_common.buildInsertSql.html +1 -1
- package/docs/functions/_saltcorn_db_common.doCount.html +1 -1
- package/docs/functions/_saltcorn_db_common.doDeleteWhere.html +1 -1
- package/docs/functions/_saltcorn_db_common.doListScTables.html +1 -1
- package/docs/functions/_saltcorn_db_common.doListTables.html +1 -1
- package/docs/functions/_saltcorn_db_common.doListUserDefinedTables.html +1 -1
- package/docs/functions/_saltcorn_db_common.do_add_index.html +1 -1
- package/docs/functions/_saltcorn_db_common.do_drop_index.html +1 -1
- package/docs/functions/_saltcorn_db_common.ftsFieldsSqlExpr.html +1 -1
- package/docs/functions/_saltcorn_db_common.mkSelectOptions.html +1 -1
- package/docs/functions/_saltcorn_db_common.mkVal.html +1 -1
- package/docs/functions/_saltcorn_db_common.mkWhere.html +1 -1
- package/docs/functions/_saltcorn_db_common.multi_tenant.enable_multi_tenant.html +1 -1
- package/docs/functions/_saltcorn_db_common.multi_tenant.getRequestContext.html +1 -1
- package/docs/functions/_saltcorn_db_common.multi_tenant.getTenantSchema.html +1 -1
- package/docs/functions/_saltcorn_db_common.multi_tenant.init.html +1 -1
- package/docs/functions/_saltcorn_db_common.multi_tenant.is_it_multi_tenant.html +1 -1
- package/docs/functions/_saltcorn_db_common.multi_tenant.runWithTenant.html +1 -1
- package/docs/functions/_saltcorn_db_common.orderByIsObject.html +1 -1
- package/docs/functions/_saltcorn_db_common.orderByIsOperator.html +1 -1
- package/docs/functions/_saltcorn_db_common.prefixFieldsInWhere.html +1 -1
- package/docs/functions/_saltcorn_db_common.reprAsJson.html +1 -1
- package/docs/functions/_saltcorn_db_common.sqlBinOp.html +1 -1
- package/docs/functions/_saltcorn_db_common.sqlFun.html +1 -1
- package/docs/functions/_saltcorn_db_common.sqlsanitize.html +1 -1
- package/docs/functions/_saltcorn_db_common.sqlsanitizeAllowDots.html +1 -1
- package/docs/functions/_saltcorn_db_common.subSelectWhere.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.androidFeatures.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.androidPermissions.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.buildTablesFile.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyPrepopulatedDb.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyServerFiles.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyShareExtFiles.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copySiteLogo.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyTranslationFiles.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.createSqliteDb.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.decodeProvisioningProfile.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.extractDomain.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.generateAndroidVersionCode.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyAndroidManifest.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyConfigXml.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyGradleConfig.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyInfoPlist.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyXcodeProjectFile.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepAppIcon.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareAppIcon.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareBuildDir.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareExportOptionsPlist.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareSplashIcon.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareSplashPage.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeCapacitorConfig.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeCfgFile.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeDataExtractionRules.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeNetworkSecurityConfig.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writePodfile.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writePrivacyInfo.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.bundleMobileAppCode.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.bundlePackagesAndPlugins.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.copyMobileAppDirs.html +1 -1
- package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.copyPublicDirs.html +1 -1
- package/docs/functions/_saltcorn_sqlite.add_index.html +1 -1
- package/docs/functions/_saltcorn_sqlite.add_unique_constraint.html +1 -1
- package/docs/functions/_saltcorn_sqlite.begin.html +1 -1
- package/docs/functions/_saltcorn_sqlite.changeConnection.html +1 -1
- package/docs/functions/_saltcorn_sqlite.close.html +1 -1
- package/docs/functions/_saltcorn_sqlite.commit.html +1 -1
- package/docs/functions/_saltcorn_sqlite.count.html +1 -1
- package/docs/functions/_saltcorn_sqlite.deleteWhere.html +1 -1
- package/docs/functions/_saltcorn_sqlite.dropTable.html +1 -1
- package/docs/functions/_saltcorn_sqlite.dropTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite.drop_index.html +1 -1
- package/docs/functions/_saltcorn_sqlite.drop_reset_schema.html +1 -1
- package/docs/functions/_saltcorn_sqlite.drop_unique_constraint.html +1 -1
- package/docs/functions/_saltcorn_sqlite.getVersion.html +1 -1
- package/docs/functions/_saltcorn_sqlite.get_db_filepath.html +1 -1
- package/docs/functions/_saltcorn_sqlite.get_sql_logging.html +1 -1
- package/docs/functions/_saltcorn_sqlite.init.html +1 -1
- package/docs/functions/_saltcorn_sqlite.insert.html +1 -1
- package/docs/functions/_saltcorn_sqlite.listScTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite.listTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite.listUserDefinedTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite.query.html +1 -1
- package/docs/functions/_saltcorn_sqlite.rollback.html +1 -1
- package/docs/functions/_saltcorn_sqlite.select.html +1 -1
- package/docs/functions/_saltcorn_sqlite.selectMaybeOne.html +1 -1
- package/docs/functions/_saltcorn_sqlite.selectOne.html +1 -1
- package/docs/functions/_saltcorn_sqlite.set_sql_logging.html +1 -1
- package/docs/functions/_saltcorn_sqlite.slugify.html +1 -1
- package/docs/functions/_saltcorn_sqlite.sql_log.html +1 -1
- package/docs/functions/_saltcorn_sqlite.tryCatchInTransaction.html +1 -1
- package/docs/functions/_saltcorn_sqlite.update.html +1 -1
- package/docs/functions/_saltcorn_sqlite.updateWhere.html +1 -1
- package/docs/functions/_saltcorn_sqlite.withTransaction.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.add_index.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.add_unique_constraint.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.count.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.deleteWhere.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.drop_index.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.drop_reset_schema.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.drop_unique_constraint.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.init.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.insert.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.insertRows.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.listScTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.listTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.listUserDefinedTables.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.query.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.select.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.selectMaybeOne.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.selectOne.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.setConnectionObject.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.tableExists.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.time.html +1 -1
- package/docs/functions/_saltcorn_sqlite_mobile.update.html +1 -1
- package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_field.instanceOfField.html +1 -1
- package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_page.instanceOfPage.html +1 -1
- package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_view.instanceOfView.html +1 -1
- package/docs/functions/_saltcorn_types.Types.base_types.instanceOWithHtmlFile.html +1 -1
- package/docs/functions/_saltcorn_types.Types.common_types.instanceOfErrorMsg.html +1 -1
- package/docs/functions/_saltcorn_types.Types.common_types.instanceOfSuccessMsg.html +1 -1
- package/docs/functions/_saltcorn_types.Types.common_types.instanceOfType.html +1 -1
- package/docs/functions/_saltcorn_types.generators.generateBool.html +1 -1
- package/docs/functions/_saltcorn_types.generators.generateString.html +1 -1
- package/docs/functions/_saltcorn_types.generators.num_between.html +1 -1
- package/docs/functions/_saltcorn_types.generators.oneOf.html +1 -1
- package/docs/interfaces/_saltcorn_mobile_builder.common_build_utils.ScCapacitorConfig.html +10 -10
- package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_field.AbstractField.html +14 -14
- package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_field.AbstractFieldRepeat.html +3 -3
- package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_form.AbstractForm.html +26 -26
- package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_page.AbstractPage.html +7 -7
- package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_role.AbstractRole.html +3 -3
- package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_table.AbstractTable.html +7 -7
- package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_trigger.AbstractTrigger.html +16 -16
- package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_view.AbstractView.html +10 -10
- package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_workflow.AbstractWorkflow.html +13 -13
- package/docs/modules/_saltcorn_admin_models.backup.html +1 -1
- package/docs/modules/_saltcorn_admin_models.html +1 -1
- package/docs/modules/_saltcorn_admin_models.pack.html +1 -1
- package/docs/modules/_saltcorn_admin_models.tenant.html +1 -1
- package/docs/modules/_saltcorn_common_code.html +1 -1
- package/docs/modules/_saltcorn_data.html +56 -18
- package/docs/modules/_saltcorn_data.models.Crash.html +2 -2
- package/docs/modules/_saltcorn_data.models.EventLog.html +2 -2
- package/docs/modules/_saltcorn_data.models.FieldRepeat.html +2 -2
- package/docs/modules/_saltcorn_data.models.File.html +2 -2
- package/docs/modules/_saltcorn_data.models.Form.html +2 -2
- package/docs/modules/_saltcorn_data.models.PageGroup.html +2 -2
- package/docs/modules/_saltcorn_data.models.Table.html +2 -2
- package/docs/modules/_saltcorn_data.models.TableConstraint.html +2 -2
- package/docs/modules/_saltcorn_data.models.User.html +2 -2
- package/docs/modules/_saltcorn_data.models.View.html +2 -2
- package/docs/modules/_saltcorn_data.models.Workflow.html +2 -2
- package/docs/modules/_saltcorn_data.models.config.html +1 -1
- package/docs/modules/_saltcorn_data.models.discovery.html +1 -1
- package/docs/modules/_saltcorn_data.models.email.html +1 -1
- package/docs/modules/_saltcorn_data.models.expression.html +1 -1
- package/docs/modules/_saltcorn_data.models.html +1 -1
- package/docs/modules/_saltcorn_data.models.layout.html +1 -1
- package/docs/modules/_saltcorn_data.models.random.html +1 -1
- package/docs/modules/_saltcorn_data.models.scheduler.html +1 -1
- package/docs/modules/_saltcorn_data.plugin_helper.html +1 -1
- package/docs/modules/_saltcorn_data.utils.html +1 -1
- package/docs/modules/_saltcorn_db_common.html +2 -2
- package/docs/modules/_saltcorn_db_common.multi_tenant.html +1 -1
- package/docs/modules/_saltcorn_markup.html +13 -13
- package/docs/modules/_saltcorn_mobile_builder.common_build_utils.html +1 -1
- package/docs/modules/_saltcorn_mobile_builder.html +1 -1
- package/docs/modules/_saltcorn_mobile_builder.package_bundle_utils.html +1 -1
- package/docs/modules/_saltcorn_sqlite.html +1 -1
- package/docs/modules/_saltcorn_sqlite_mobile.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_field.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_form.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_library.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_page.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_plugin.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_role.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_table.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_trigger.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_view.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_workflow.html +1 -1
- package/docs/modules/_saltcorn_types.ModelAbstracts.html +1 -1
- package/docs/modules/_saltcorn_types.Types.base_types.html +1 -1
- package/docs/modules/_saltcorn_types.Types.common_types.html +1 -1
- package/docs/modules/_saltcorn_types.Types.html +1 -1
- package/docs/modules/_saltcorn_types.generators.html +1 -1
- package/docs/modules/_saltcorn_types.html +1 -1
- package/docs/types/_saltcorn_data.models.Crash.CrashCfg.html +1 -1
- package/docs/types/_saltcorn_data.models.EventLog.EventLogCfg.html +1 -1
- package/docs/types/_saltcorn_data.models.FieldRepeat.FieldRepeatCfg.html +1 -1
- package/docs/types/_saltcorn_data.models.File.FileCfg.html +1 -1
- package/docs/types/_saltcorn_data.models.Form.AdditionalButton.html +1 -1
- package/docs/types/_saltcorn_data.models.Form.FormCfg.html +1 -1
- package/docs/types/_saltcorn_data.models.PageGroup.ScreenInfoParams.html +1 -1
- package/docs/types/_saltcorn_data.models.Table.ChildRelations.html +1 -1
- package/docs/types/_saltcorn_data.models.Table.ParentRelations.html +1 -1
- package/docs/types/_saltcorn_data.models.Table.RelationData.html +1 -1
- package/docs/types/_saltcorn_data.models.TableConstraint.TableConstraintCfg.html +1 -1
- package/docs/types/_saltcorn_data.models.User.UserCfg.html +1 -1
- package/docs/types/_saltcorn_data.models.View.FindViewsPred.html +1 -1
- package/docs/types/_saltcorn_data.models.Workflow.WorkflowCfg.html +1 -1
- package/docs/types/_saltcorn_db_common.AggregationOptions.html +1 -1
- package/docs/types/_saltcorn_db_common.CoordOpts.html +1 -1
- package/docs/types/_saltcorn_db_common.DatabaseClient.html +1 -1
- package/docs/types/_saltcorn_db_common.JoinField.html +1 -1
- package/docs/types/_saltcorn_db_common.JoinFields.html +1 -1
- package/docs/types/_saltcorn_db_common.JoinOptions.html +1 -1
- package/docs/types/_saltcorn_db_common.JsonPath.html +1 -1
- package/docs/types/_saltcorn_db_common.JsonPathElem.html +1 -1
- package/docs/types/_saltcorn_db_common.Operator.html +1 -1
- package/docs/types/_saltcorn_db_common.PrimaryKeyValue.html +1 -1
- package/docs/types/_saltcorn_db_common.Row.html +1 -1
- package/docs/types/_saltcorn_db_common.SelectOptions.html +1 -1
- package/docs/types/_saltcorn_db_common.SqlAndValues.html +1 -1
- package/docs/types/_saltcorn_db_common.SubselectOptions.html +1 -1
- package/docs/types/_saltcorn_db_common.Value.html +1 -1
- package/docs/types/_saltcorn_db_common.Where.html +1 -1
- package/docs/types/_saltcorn_mobile_builder.IosCfg.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_field.FieldCfg.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_field.InputType.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_form.AdditionalButton.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_library.LibraryCfg.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_library.LibraryPack.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_page.PageCfg.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_page.PagePack.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_plugin.PluginCfg.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_plugin.PluginPack.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_role.RoleCfg.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_role.RolePack.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_table.TableCfg.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_table.TablePack.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_trigger.TriggerCfg.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_trigger.TriggerPack.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_view.ViewCfg.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_view.ViewPack.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_workflow.ConfigWorkflowStep.html +1 -1
- package/docs/types/_saltcorn_types.ModelAbstracts.abstract_workflow.RunResult.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.Action.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.AuthenticationMethod.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.CapacitorPlugin.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.CodePagePack.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.Column.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.ConnectedObjects.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.CopilotSkill.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.FieldLike.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.FieldView.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.Header.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.JoinFieldOption.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.Layout.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.MobileConfig.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.ModelPattern.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.Pack.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.Plugin.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.PluginFunction.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.PluginLayout.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.PluginRoute.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.PluginSourceType.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.PluginType.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.PluginWrap.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.PluginWrapArg.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.RelationOption.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.Req.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.Res.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.RouteAction.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.RunExtra.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.TableProvider.html +5 -5
- package/docs/types/_saltcorn_types.Types.base_types.TableQuery.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.Tablely.html +1 -1
- package/docs/types/_saltcorn_types.Types.base_types.ViewTemplate.html +1 -1
- package/docs/types/_saltcorn_types.Types.common_types.ErrorMessage.html +1 -1
- package/docs/types/_saltcorn_types.Types.common_types.GenObj.html +1 -1
- package/docs/types/_saltcorn_types.Types.common_types.ReqRes.html +1 -1
- package/docs/types/_saltcorn_types.Types.common_types.ResultMessage.html +1 -1
- package/docs/types/_saltcorn_types.Types.common_types.SuccessMessage.html +1 -1
- package/docs/types/_saltcorn_types.Types.common_types.Type.html +17 -4
- package/docs/variables/_saltcorn_data.db.html +1 -1
- package/docs/variables/_saltcorn_data.migrations.html +1 -1
- package/docs/variables/_saltcorn_data.models.config.available_languages.html +1 -1
- package/docs/variables/_saltcorn_data.models.config.configTypes.html +1 -1
- package/docs/variables/_saltcorn_data.models.scheduler.runScheduler.html +1 -1
- package/docs/variables/_saltcorn_data.plugin_helper.run_action_column.html +1 -1
- package/docs/variables/_saltcorn_data.utils.NotAuthorized.html +1 -1
- package/docs/variables/_saltcorn_data.utils.sleep.html +1 -1
- package/docs/variables/_saltcorn_db_common.multi_tenant.tenantNamespace.html +1 -1
- package/locales/da.json +57 -1
- package/locales/en.json +3 -1
- package/package.json +9 -9
- package/public/saltcorn-common.js +22 -11
- package/public/saltcorn.js +10 -3
- package/routes/actions.js +8 -2
- package/routes/admin.js +89 -7
- package/routes/api.js +10 -4
- package/routes/common_lists.js +4 -1
- package/routes/fields.js +1 -6
- package/routes/infoarch.js +59 -15
- package/routes/menu.js +1 -1
- package/routes/plugins.js +1 -1
- package/routes/registry.js +17 -0
- package/routes/tables.js +2 -1
- package/tests/menu.test.js +122 -0
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<h1>Variable sleep</h1></div>
|
|
20
20
|
<div class="tsd-signature"><span class="tsd-kind-variable">sleep</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span></div><aside class="tsd-sources">
|
|
21
21
|
<ul>
|
|
22
|
-
<li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/
|
|
22
|
+
<li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/99d8abda8b/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
|
|
23
23
|
<div class="col-sidebar">
|
|
24
24
|
<div class="page-menu">
|
|
25
25
|
<div class="tsd-navigation settings">
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<h1>Variable tenantNamespace<code class="tsd-tag ts-flagConst">Const</code> </h1></div>
|
|
20
20
|
<div class="tsd-signature"><span class="tsd-kind-variable">tenant<wbr/>Namespace</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type ">AsyncLocalStorage</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type ">RequestContext</span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol"> = ...</span></div><aside class="tsd-sources">
|
|
21
21
|
<ul>
|
|
22
|
-
<li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/
|
|
22
|
+
<li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/99d8abda8b/packages/db-common/multi-tenant.ts#L17">db-common/multi-tenant.ts:17</a></li></ul></aside></div>
|
|
23
23
|
<div class="col-sidebar">
|
|
24
24
|
<div class="page-menu">
|
|
25
25
|
<div class="tsd-navigation settings">
|
package/locales/da.json
CHANGED
|
@@ -860,5 +860,61 @@
|
|
|
860
860
|
"Always show create view": "Vis altid opret visning",
|
|
861
861
|
"If off, only show create view if the query state is about the current user": "Hvis slukket, vis kun opret visning, hvis forespørgselstilstanden handler om den nuværende bruger.",
|
|
862
862
|
"The current theme has no user specific settings": "The current theme has no user specific settings",
|
|
863
|
-
"View '%s' was loaded": "View '%s' was loaded"
|
|
863
|
+
"View '%s' was loaded": "View '%s' was loaded",
|
|
864
|
+
"After delete": "After delete",
|
|
865
|
+
"Working directory": "Working directory",
|
|
866
|
+
"All tags": "All tags",
|
|
867
|
+
"Manage tags...": "Manage tags...",
|
|
868
|
+
"Triggers on table": "Triggers on table",
|
|
869
|
+
"Create trigger": "Create trigger",
|
|
870
|
+
"Create model": "Create model",
|
|
871
|
+
"Delete table": "Delete table",
|
|
872
|
+
"Delete table+views+triggers": "Delete table+views+triggers",
|
|
873
|
+
"Sync information": "Sync information",
|
|
874
|
+
"Sync information tracks the last modification or deletion timestamp so that the table data can be synchronized with the mobile app": "Sync information tracks the last modification or deletion timestamp so that the table data can be synchronized with the mobile app",
|
|
875
|
+
"Models": "Models",
|
|
876
|
+
"Row inclusion formula": "Row inclusion formula",
|
|
877
|
+
"Only include rows where this formula is true. ": "Only include rows where this formula is true. ",
|
|
878
|
+
"In scope:": "In scope:",
|
|
879
|
+
"Error message": "Error message",
|
|
880
|
+
"Error shown to user if uniqueness is violated": "Error shown to user if uniqueness is violated",
|
|
881
|
+
"Calculated field will be stored in Database": "Calculated field will be stored in Database",
|
|
882
|
+
"Protected": "Protected",
|
|
883
|
+
"Set role to access": "Set role to access",
|
|
884
|
+
"User must have this role or higher to update or create field values": "User must have this role or higher to update or create field values",
|
|
885
|
+
"The field that will be shown to the user when choosing a value": "The field that will be shown to the user when choosing a value",
|
|
886
|
+
"Include in full-text search": "Include in full-text search",
|
|
887
|
+
"On delete": "On delete",
|
|
888
|
+
"Prevent any deletion of parent rows": "Prevent any deletion of parent rows",
|
|
889
|
+
"If the parent row is deleted, automatically delete the child rows.": "If the parent row is deleted, automatically delete the child rows.",
|
|
890
|
+
"If the parent row is deleted, set key fields on child rows to null": "If the parent row is deleted, set key fields on child rows to null",
|
|
891
|
+
"If the parent row is deleted, do this to the child rows.": "If the parent row is deleted, do this to the child rows.",
|
|
892
|
+
"Installed theme": "Installed theme",
|
|
893
|
+
"Theme for role": "Theme for role",
|
|
894
|
+
"Set theme for each user role »": "Set theme for each user role »",
|
|
895
|
+
"Available themes": "Available themes",
|
|
896
|
+
"Install more themes »": "Install more themes »",
|
|
897
|
+
"The view name is part of the URL when it is shown alone.": "The view name is part of the URL when it is shown alone.",
|
|
898
|
+
"Some view patterns accept interpolations. Ex: <code>{{ name }}</code> or <code>{{ row ? `Edit ${row.name}` : `New person` }}</code>": "Some view patterns accept interpolations. Ex: <code>{{ name }}</code> or <code>{{ row ? `Edit ${row.name}` : `New person` }}</code>",
|
|
899
|
+
"Page description": "Page description",
|
|
900
|
+
"For search engines. Some view patterns accept interpolations.": "For search engines. Some view patterns accept interpolations.",
|
|
901
|
+
"No menu": "No menu",
|
|
902
|
+
"Omit the menu from this view": "Omit the menu from this view",
|
|
903
|
+
"Popup width": "Popup width",
|
|
904
|
+
"Popup min width": "Popup min width",
|
|
905
|
+
"Show an icon in the title bar to indicate when form data is being saved": "Show an icon in the title bar to indicate when form data is being saved",
|
|
906
|
+
"Link out?": "Link out?",
|
|
907
|
+
"Show a link to open popup contents in new tab": "Show a link to open popup contents in new tab",
|
|
908
|
+
"Search for...": "Search for...",
|
|
909
|
+
"Clean modules and restart": "Clean modules and restart",
|
|
910
|
+
"Mobile": "Mobile",
|
|
911
|
+
"Create new row": "Create new row",
|
|
912
|
+
"Locale identifier short code, e.g. en, zh, fr, ar etc. ": "Locale identifier short code, e.g. en, zh, fr, ar etc. ",
|
|
913
|
+
"Is this the default language in which the application is built?": "Is this the default language in which the application is built?",
|
|
914
|
+
"Translate with LLM": "Translate with LLM",
|
|
915
|
+
"Pagegroups": "Pagegroups",
|
|
916
|
+
"Registry editor": "Registry editor",
|
|
917
|
+
"Choose File": "Choose File",
|
|
918
|
+
"No file chosen": "No file chosen",
|
|
919
|
+
"Fixed and blocked fields": "Fixed and blocked fields"
|
|
864
920
|
}
|
package/locales/en.json
CHANGED
|
@@ -1602,5 +1602,7 @@
|
|
|
1602
1602
|
"Translated %s strings. Click 'Translate with LLM' again to continue": "Translated %s strings. Click 'Translate with LLM' again to continue",
|
|
1603
1603
|
"Translate with LLM": "Translate with LLM",
|
|
1604
1604
|
"You may need to adjust view relations associated with this table after renaming it": "You may need to adjust view relations associated with this table after renaming it",
|
|
1605
|
-
"Error running workflow": "Error running workflow"
|
|
1605
|
+
"Error running workflow": "Error running workflow",
|
|
1606
|
+
"Choose File": "Choose File",
|
|
1607
|
+
"No file chosen": "No file chosen"
|
|
1606
1608
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saltcorn/server",
|
|
3
|
-
"version": "1.1.4
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "Server app for Saltcorn, open-source no-code platform",
|
|
5
5
|
"homepage": "https://saltcorn.com",
|
|
6
6
|
"main": "index.js",
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@aws-sdk/client-s3": "^3.735.0",
|
|
10
10
|
"@dr.pogodin/csurf": "^1.14.1",
|
|
11
|
-
"@saltcorn/base-plugin": "1.1.4
|
|
12
|
-
"@saltcorn/builder": "1.1.4
|
|
13
|
-
"@saltcorn/data": "1.1.4
|
|
14
|
-
"@saltcorn/admin-models": "1.1.4
|
|
15
|
-
"@saltcorn/filemanager": "1.1.4
|
|
16
|
-
"@saltcorn/markup": "1.1.4
|
|
17
|
-
"@saltcorn/plugins-loader": "1.1.4
|
|
18
|
-
"@saltcorn/sbadmin2": "1.1.4
|
|
11
|
+
"@saltcorn/base-plugin": "1.1.4",
|
|
12
|
+
"@saltcorn/builder": "1.1.4",
|
|
13
|
+
"@saltcorn/data": "1.1.4",
|
|
14
|
+
"@saltcorn/admin-models": "1.1.4",
|
|
15
|
+
"@saltcorn/filemanager": "1.1.4",
|
|
16
|
+
"@saltcorn/markup": "1.1.4",
|
|
17
|
+
"@saltcorn/plugins-loader": "1.1.4",
|
|
18
|
+
"@saltcorn/sbadmin2": "1.1.4",
|
|
19
19
|
"@socket.io/cluster-adapter": "^0.2.1",
|
|
20
20
|
"@socket.io/sticky": "^1.0.1",
|
|
21
21
|
"adm-zip": "0.5.16",
|
|
@@ -736,6 +736,14 @@ function escapeHtml(text) {
|
|
|
736
736
|
});
|
|
737
737
|
}
|
|
738
738
|
|
|
739
|
+
function unescapeHtml(str) {
|
|
740
|
+
if (!str || !str.replace) return str;
|
|
741
|
+
return str
|
|
742
|
+
.replaceAll("<", "<")
|
|
743
|
+
.replaceAll(">", ">")
|
|
744
|
+
.replaceAll("&", "&");
|
|
745
|
+
}
|
|
746
|
+
|
|
739
747
|
function reload_on_init() {
|
|
740
748
|
localStorage.setItem("reload_on_init", true);
|
|
741
749
|
}
|
|
@@ -1018,7 +1026,8 @@ function initialize_page() {
|
|
|
1018
1026
|
);
|
|
1019
1027
|
}
|
|
1020
1028
|
});
|
|
1021
|
-
$("[data-inline-edit-dest-url]").click(function () {
|
|
1029
|
+
$("[data-inline-edit-dest-url]").click(function (event) {
|
|
1030
|
+
event.stopPropagation();
|
|
1022
1031
|
var url = $(this).attr("data-inline-edit-dest-url");
|
|
1023
1032
|
var current =
|
|
1024
1033
|
$(this).attr("data-inline-edit-current") ||
|
|
@@ -1042,7 +1051,7 @@ function initialize_page() {
|
|
|
1042
1051
|
})
|
|
1043
1052
|
);
|
|
1044
1053
|
$(this).replaceWith(
|
|
1045
|
-
`<form method="post" action="/field/save-click-edit" onsubmit="inline_ajax_submit_with_fielddata(event, '${opts}')"
|
|
1054
|
+
`<form method="post" action="/field/save-click-edit" onclick="event.stopPropagation()" onsubmit="inline_ajax_submit_with_fielddata(event, '${opts}')"
|
|
1046
1055
|
<input type="hidden" name="_csrf" value="${_sc_globalCsrf}">
|
|
1047
1056
|
<input type="hidden" name="_fielddata" value="${fielddata}">
|
|
1048
1057
|
<div class="input-group">
|
|
@@ -1124,7 +1133,8 @@ function initialize_page() {
|
|
|
1124
1133
|
} else if (is_key) {
|
|
1125
1134
|
const [tblName, target] = type.replace("Key:", "").split(".");
|
|
1126
1135
|
doAjaxOptionsFetch(tblName, target);
|
|
1127
|
-
} else
|
|
1136
|
+
} else {
|
|
1137
|
+
const parent = $(this).parent();
|
|
1128
1138
|
$(this).replaceWith(
|
|
1129
1139
|
`<form method="post" action="${url}" ${
|
|
1130
1140
|
ajax
|
|
@@ -1154,17 +1164,18 @@ function initialize_page() {
|
|
|
1154
1164
|
: "any"
|
|
1155
1165
|
}"`
|
|
1156
1166
|
: ""
|
|
1157
|
-
} name="${key}" ${
|
|
1158
|
-
type === "Bool"
|
|
1159
|
-
? current
|
|
1160
|
-
? "checked"
|
|
1161
|
-
: ""
|
|
1162
|
-
: `value="${escapeHtml(current)}"`
|
|
1163
|
-
}>
|
|
1167
|
+
} name="${key}" ${type === "Bool" ? (current ? "checked" : "") : ``}>
|
|
1164
1168
|
<button type="submit" class="btn btn-sm btn-primary">OK</button>
|
|
1165
|
-
<button onclick="cancel_inline_edit(event, '${opts}')" type="button" class="btn btn-sm btn-danger"><i class="fas fa-times"></i></button>
|
|
1169
|
+
<button onclick="cancel_inline_edit(event, '${opts.replaceAll("'", "\\'")}')" type="button" class="btn btn-sm btn-danger"><i class="fas fa-times"></i></button>
|
|
1166
1170
|
</form>`
|
|
1167
1171
|
);
|
|
1172
|
+
if (type !== "Bool") {
|
|
1173
|
+
const newVal = $(this).attr("data-inline-edit-unescape")
|
|
1174
|
+
? unescapeHtml(current)
|
|
1175
|
+
: current;
|
|
1176
|
+
parent.find(`[name="${key}"]`).val(newVal);
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1168
1179
|
});
|
|
1169
1180
|
if (!isNode) {
|
|
1170
1181
|
doMobileTransforms();
|
package/public/saltcorn.js
CHANGED
|
@@ -215,6 +215,7 @@ function pjax_to(href, e) {
|
|
|
215
215
|
$dest.html(res);
|
|
216
216
|
if (localizer.length) localizer.attr("data-sc-local-state", href);
|
|
217
217
|
initialize_page();
|
|
218
|
+
document.dispatchEvent(new Event("pjax-loaded"));
|
|
218
219
|
},
|
|
219
220
|
error: function (res) {
|
|
220
221
|
if (!checkNetworkError(res))
|
|
@@ -722,9 +723,15 @@ function checkNetworkError(e) {
|
|
|
722
723
|
}
|
|
723
724
|
|
|
724
725
|
function ajax_post_btn(e, reload_on_done, reload_delay) {
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
726
|
+
let form_data = "";
|
|
727
|
+
let url;
|
|
728
|
+
if (typeof e === "string") url = e;
|
|
729
|
+
else if (e) {
|
|
730
|
+
var form = $(e).closest("form");
|
|
731
|
+
url = form.attr("action");
|
|
732
|
+
form_data = form.serialize();
|
|
733
|
+
}
|
|
734
|
+
|
|
728
735
|
$.ajax(url, {
|
|
729
736
|
type: "POST",
|
|
730
737
|
headers: {
|
package/routes/actions.js
CHANGED
|
@@ -930,7 +930,12 @@ router.get(
|
|
|
930
930
|
' <i class="fas fa-edit"></i>'
|
|
931
931
|
) +
|
|
932
932
|
a(
|
|
933
|
-
{
|
|
933
|
+
{
|
|
934
|
+
href: `/actions/testrun/${id}`,
|
|
935
|
+
class: "ms-2",
|
|
936
|
+
onclick: `press_store_button(this)`,
|
|
937
|
+
},
|
|
938
|
+
|
|
934
939
|
req.__("Test run") + " »"
|
|
935
940
|
);
|
|
936
941
|
if (trigger.action === "Workflow") {
|
|
@@ -1277,7 +1282,7 @@ router.get(
|
|
|
1277
1282
|
sub2_page: "Test run output",
|
|
1278
1283
|
contents: {
|
|
1279
1284
|
type: "card",
|
|
1280
|
-
title: req.__("Test run output"),
|
|
1285
|
+
title: req.__("Test run output") + " - " + trigger.name,
|
|
1281
1286
|
contents: div(
|
|
1282
1287
|
div({ class: "testrunoutput" }, output),
|
|
1283
1288
|
runres
|
|
@@ -1298,6 +1303,7 @@ router.get(
|
|
|
1298
1303
|
{
|
|
1299
1304
|
href: `/actions/testrun/${id}`,
|
|
1300
1305
|
class: "ms-1 mt-4 btn btn-primary",
|
|
1306
|
+
onclick: `press_store_button(this)`,
|
|
1301
1307
|
},
|
|
1302
1308
|
i({ class: "fas fa-redo me-1" }),
|
|
1303
1309
|
req.__("Re-run")
|
package/routes/admin.js
CHANGED
|
@@ -97,7 +97,10 @@ const {
|
|
|
97
97
|
const packagejson = require("../package.json");
|
|
98
98
|
const Form = require("@saltcorn/data/models/form");
|
|
99
99
|
const { get_latest_npm_version } = require("@saltcorn/data/models/config");
|
|
100
|
-
const {
|
|
100
|
+
const {
|
|
101
|
+
getMailTransport,
|
|
102
|
+
getOauth2Client,
|
|
103
|
+
} = require("@saltcorn/data/models/email");
|
|
101
104
|
const {
|
|
102
105
|
getBaseDomain,
|
|
103
106
|
hostname_matches_baseurl,
|
|
@@ -216,8 +219,22 @@ admin_config_route({
|
|
|
216
219
|
flash: "Email settings updated",
|
|
217
220
|
field_names: [
|
|
218
221
|
"smtp_host",
|
|
219
|
-
"
|
|
220
|
-
"
|
|
222
|
+
"smtp_auth_method",
|
|
223
|
+
{ name: "smtp_username", showIf: { smtp_auth_method: "password" } },
|
|
224
|
+
{ name: "smtp_password", showIf: { smtp_auth_method: "password" } },
|
|
225
|
+
{
|
|
226
|
+
name: "smtp_api_option",
|
|
227
|
+
showIf: {
|
|
228
|
+
smtp_host: "outlook.office365.com",
|
|
229
|
+
smtp_auth_method: "oauth2",
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
{ name: "smtp_authorize_url", showIf: { smtp_auth_method: "oauth2" } },
|
|
233
|
+
{ name: "smtp_token_url", showIf: { smtp_auth_method: "oauth2" } },
|
|
234
|
+
{ name: "smtp_redirect_uri", showIf: { smtp_auth_method: "oauth2" } },
|
|
235
|
+
{ name: "smtp_client_id", showIf: { smtp_auth_method: "oauth2" } },
|
|
236
|
+
{ name: "smtp_client_secret", showIf: { smtp_auth_method: "oauth2" } },
|
|
237
|
+
{ name: "smtp_outh_scopes", showIf: { smtp_auth_method: "oauth2" } },
|
|
221
238
|
"smtp_port",
|
|
222
239
|
"smtp_secure",
|
|
223
240
|
"smtp_allow_self_signed",
|
|
@@ -243,6 +260,40 @@ admin_config_route({
|
|
|
243
260
|
},
|
|
244
261
|
req.__("Send test email")
|
|
245
262
|
),
|
|
263
|
+
a(
|
|
264
|
+
{
|
|
265
|
+
id: "authenticate_oauth",
|
|
266
|
+
href: "/admin/authorize-mail-oauth",
|
|
267
|
+
class: "btn btn-primary ms-2",
|
|
268
|
+
onclick: "spin_action_link(this)",
|
|
269
|
+
},
|
|
270
|
+
req.__("Authorize")
|
|
271
|
+
),
|
|
272
|
+
script(`
|
|
273
|
+
function authMethodChange(method) {
|
|
274
|
+
const btn = document.getElementById("authenticate_oauth");
|
|
275
|
+
if (method === "oauth2") {
|
|
276
|
+
btn.classList.remove("d-none");
|
|
277
|
+
btn.classList.add("d-inline");
|
|
278
|
+
// get
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
btn.classList.add("d-none");
|
|
282
|
+
btn.classList.remove("d-inline");
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
}
|
|
286
|
+
${domReady(`
|
|
287
|
+
const authMethod = document.getElementById('inputsmtp_auth_method');
|
|
288
|
+
if (authMethod) {
|
|
289
|
+
const authMethodValue = authMethod.value;
|
|
290
|
+
authMethodChange(authMethodValue);
|
|
291
|
+
authMethod.addEventListener('change', (e) => {
|
|
292
|
+
const authMethod = e.target.value;
|
|
293
|
+
authMethodChange(authMethod);
|
|
294
|
+
});
|
|
295
|
+
}`)}
|
|
296
|
+
`),
|
|
246
297
|
],
|
|
247
298
|
},
|
|
248
299
|
});
|
|
@@ -266,7 +317,7 @@ router.get(
|
|
|
266
317
|
html: req.__("Hello from Saltcorn"),
|
|
267
318
|
};
|
|
268
319
|
try {
|
|
269
|
-
const sendres = await getMailTransport().sendMail(email);
|
|
320
|
+
const sendres = await (await getMailTransport()).sendMail(email);
|
|
270
321
|
getState().log(6, sendres);
|
|
271
322
|
req.flash(
|
|
272
323
|
"success",
|
|
@@ -281,6 +332,27 @@ router.get(
|
|
|
281
332
|
})
|
|
282
333
|
);
|
|
283
334
|
|
|
335
|
+
/**
|
|
336
|
+
* do the redirect to the oauth2 provider
|
|
337
|
+
*/
|
|
338
|
+
router.get(
|
|
339
|
+
"/authorize-mail-oauth",
|
|
340
|
+
isAdmin,
|
|
341
|
+
error_catcher(async (req, res) => {
|
|
342
|
+
const client = getOauth2Client();
|
|
343
|
+
const smtpRedirectUri = getState().getConfig("smtp_redirect_uri");
|
|
344
|
+
const scopes = getState().getConfig("smtp_outh_scopes");
|
|
345
|
+
const scopeArray = scopes.split(" ").map((s) => s.trim());
|
|
346
|
+
|
|
347
|
+
// Mail.Send SMTP.Send profile openid email https://outlook.office365.com/IMAP.AccessAsUser.All
|
|
348
|
+
const authorizeUrl = client.authorizeURL({
|
|
349
|
+
redirect_uri: smtpRedirectUri,
|
|
350
|
+
scope: scopeArray,
|
|
351
|
+
});
|
|
352
|
+
res.redirect(authorizeUrl);
|
|
353
|
+
})
|
|
354
|
+
);
|
|
355
|
+
|
|
284
356
|
/**
|
|
285
357
|
* @name get/send-test-email
|
|
286
358
|
* @function
|
|
@@ -288,7 +360,16 @@ router.get(
|
|
|
288
360
|
*/
|
|
289
361
|
router.get(
|
|
290
362
|
"/help/:topic",
|
|
291
|
-
|
|
363
|
+
isAdminOrHasConfigMinRole([
|
|
364
|
+
"min_role_edit_tables",
|
|
365
|
+
"min_role_inspect_tables",
|
|
366
|
+
"min_role_edit_views",
|
|
367
|
+
"min_role_edit_pages",
|
|
368
|
+
"min_role_edit_triggers",
|
|
369
|
+
"min_role_edit_search",
|
|
370
|
+
"min_role_edit_menu",
|
|
371
|
+
"min_role_edit_files",
|
|
372
|
+
]),
|
|
292
373
|
error_catcher(async (req, res) => {
|
|
293
374
|
const { topic } = req.params;
|
|
294
375
|
const { markup } = await get_help_markup(topic, req.query, req);
|
|
@@ -438,8 +519,9 @@ router.get(
|
|
|
438
519
|
{
|
|
439
520
|
btnClass: "btn-outline-primary",
|
|
440
521
|
klass: "backupadminbtn",
|
|
441
|
-
//TODO not sure how to tell when backup done
|
|
442
|
-
onClick:
|
|
522
|
+
//TODO not sure how to tell when backup done
|
|
523
|
+
onClick:
|
|
524
|
+
"spin_action_link($('.backupadminbtn'));setTimeout(()=> reset_spinners($('.backupadminbtn')), 3000)",
|
|
443
525
|
}
|
|
444
526
|
)
|
|
445
527
|
),
|
package/routes/api.js
CHANGED
|
@@ -426,10 +426,16 @@ router.get(
|
|
|
426
426
|
}
|
|
427
427
|
}
|
|
428
428
|
if (tabulator_pagination_format) {
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
429
|
+
const count = await table.countRows();
|
|
430
|
+
if (count === null)
|
|
431
|
+
res.json({
|
|
432
|
+
data: rows.map(limitFields(fields)),
|
|
433
|
+
});
|
|
434
|
+
else
|
|
435
|
+
res.json({
|
|
436
|
+
last_page: Math.ceil(count / +tabulator_size),
|
|
437
|
+
data: rows.map(limitFields(fields)),
|
|
438
|
+
});
|
|
433
439
|
} else res.json({ success: rows.map(limitFields(fields)) });
|
|
434
440
|
} else {
|
|
435
441
|
getState().log(3, `API get ${table.name} not authorized`);
|
package/routes/common_lists.js
CHANGED
package/routes/fields.js
CHANGED
|
@@ -307,12 +307,7 @@ const fieldFlow = (req) =>
|
|
|
307
307
|
try {
|
|
308
308
|
await db.withTransaction(async () => {
|
|
309
309
|
if (context.id) {
|
|
310
|
-
const field = await Field.findOne({ id: context.id });
|
|
311
|
-
|
|
312
|
-
if (fldRow.label && field.label != fldRow.label) {
|
|
313
|
-
fldRow.name = Field.labelToName(fldRow.label);
|
|
314
|
-
}
|
|
315
|
-
|
|
310
|
+
const field = await Field.findOne({ id: context.id });
|
|
316
311
|
await field.update(fldRow);
|
|
317
312
|
Trigger.emitEvent(
|
|
318
313
|
"AppChange",
|
package/routes/infoarch.js
CHANGED
|
@@ -19,13 +19,19 @@ const {
|
|
|
19
19
|
upload_language_pack,
|
|
20
20
|
} = require("../markup/admin.js");
|
|
21
21
|
const { getState } = require("@saltcorn/data/db/state");
|
|
22
|
-
const { div, a, i, text, button } = require("@saltcorn/markup/tags");
|
|
23
|
-
const {
|
|
22
|
+
const { span, div, a, i, text, button } = require("@saltcorn/markup/tags");
|
|
23
|
+
const {
|
|
24
|
+
mkTable,
|
|
25
|
+
renderForm,
|
|
26
|
+
post_delete_btn,
|
|
27
|
+
post_btn,
|
|
28
|
+
} = require("@saltcorn/markup");
|
|
24
29
|
const Form = require("@saltcorn/data/models/form");
|
|
25
30
|
const Snapshot = require("@saltcorn/admin-models/models/snapshot");
|
|
26
31
|
const { stringify } = require("csv-stringify");
|
|
27
32
|
const csvtojson = require("csvtojson");
|
|
28
33
|
const { hasLLM, translate } = require("@saltcorn/data/translate");
|
|
34
|
+
const { escapeHtml } = require("@saltcorn/data/utils");
|
|
29
35
|
|
|
30
36
|
/**
|
|
31
37
|
* @type {object}
|
|
@@ -365,18 +371,35 @@ router.get(
|
|
|
365
371
|
[
|
|
366
372
|
{
|
|
367
373
|
label: req.__("In default language"),
|
|
368
|
-
key:
|
|
374
|
+
key: (r) => escapeHtml(r.in_default),
|
|
369
375
|
},
|
|
370
376
|
{
|
|
371
377
|
label: req.__("In %s", form.values.name),
|
|
372
378
|
key: (r) =>
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
379
|
+
span(
|
|
380
|
+
div(
|
|
381
|
+
{
|
|
382
|
+
"data-inline-edit-dest-url": `/site-structure/localizer/save-string/${lang}/${encodeURIComponent(
|
|
383
|
+
r.in_default
|
|
384
|
+
)}`,
|
|
385
|
+
"data-inline-edit-unescape": "true",
|
|
386
|
+
class: "d-inline",
|
|
387
|
+
},
|
|
388
|
+
escapeHtml(r.translated)
|
|
389
|
+
),
|
|
390
|
+
r.in_default !== r.translated &&
|
|
391
|
+
post_btn(
|
|
392
|
+
`/site-structure/localizer/delete-string/${lang}/${encodeURIComponent(
|
|
393
|
+
r.in_default
|
|
394
|
+
)}`,
|
|
395
|
+
"",
|
|
396
|
+
req.csrfToken(),
|
|
397
|
+
{
|
|
398
|
+
icon: "fas fa-trash-alt",
|
|
399
|
+
btnClass: "btn-sm btn-xs btn-link link-danger",
|
|
400
|
+
formClass: "d-inline",
|
|
401
|
+
}
|
|
402
|
+
)
|
|
380
403
|
),
|
|
381
404
|
},
|
|
382
405
|
],
|
|
@@ -431,10 +454,12 @@ router.post(
|
|
|
431
454
|
req.flash(
|
|
432
455
|
"success",
|
|
433
456
|
req.__(
|
|
434
|
-
`Translated %s strings. Click 'Translate with LLM' again to continue`,
|
|
457
|
+
`Translated %s strings. Click 'Translate with LLM' again to continue`,
|
|
458
|
+
count
|
|
435
459
|
)
|
|
436
460
|
);
|
|
437
|
-
else
|
|
461
|
+
else
|
|
462
|
+
req.flash("success", req.__(`Finished translating %s strings.`, count));
|
|
438
463
|
res.redirect(`/site-structure/localizer/edit/${lang}`);
|
|
439
464
|
})
|
|
440
465
|
);
|
|
@@ -459,9 +484,28 @@ router.post(
|
|
|
459
484
|
return;
|
|
460
485
|
}
|
|
461
486
|
const cfgStrings = getState().getConfigCopy("localizer_strings");
|
|
462
|
-
if (cfgStrings[lang])
|
|
463
|
-
|
|
464
|
-
|
|
487
|
+
if (cfgStrings[lang]) cfgStrings[lang][defstring] = (req.body || {}).value;
|
|
488
|
+
else cfgStrings[lang] = { [defstring]: (req.body || {}).value };
|
|
489
|
+
await getState().setConfig("localizer_strings", cfgStrings);
|
|
490
|
+
res.redirect(`/site-structure/localizer/edit/${lang}`);
|
|
491
|
+
})
|
|
492
|
+
);
|
|
493
|
+
|
|
494
|
+
router.post(
|
|
495
|
+
"/localizer/delete-string/:lang/:defstring",
|
|
496
|
+
isAdmin,
|
|
497
|
+
error_catcher(async (req, res) => {
|
|
498
|
+
const { lang, defstring } = req.params;
|
|
499
|
+
if (
|
|
500
|
+
lang === "__proto__" ||
|
|
501
|
+
defstring === "__proto__" ||
|
|
502
|
+
lang === "constructor"
|
|
503
|
+
) {
|
|
504
|
+
res.redirect(`/`);
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
const cfgStrings = getState().getConfigCopy("localizer_strings");
|
|
508
|
+
if (cfgStrings[lang]) delete cfgStrings[lang][defstring];
|
|
465
509
|
await getState().setConfig("localizer_strings", cfgStrings);
|
|
466
510
|
res.redirect(`/site-structure/localizer/edit/${lang}`);
|
|
467
511
|
})
|
package/routes/menu.js
CHANGED
package/routes/plugins.js
CHANGED
|
@@ -102,7 +102,7 @@ const pluginForm = (req, plugin) => {
|
|
|
102
102
|
name: "source",
|
|
103
103
|
type: getState().types.String,
|
|
104
104
|
required: true,
|
|
105
|
-
attributes: { options: "npm,local,github,git" },
|
|
105
|
+
attributes: { options: ["npm", "local", "github", "git"] },
|
|
106
106
|
sublabel: req.__(
|
|
107
107
|
"Source of module for install. Few options:" +
|
|
108
108
|
"npm - download from npm repository," +
|
package/routes/registry.js
CHANGED
|
@@ -374,6 +374,23 @@ router.post(
|
|
|
374
374
|
await db.withTransaction(async () => {
|
|
375
375
|
await install_pack(pack);
|
|
376
376
|
});
|
|
377
|
+
switch (etype) {
|
|
378
|
+
case "table":
|
|
379
|
+
await getState().refresh_tables();
|
|
380
|
+
break;
|
|
381
|
+
case "view":
|
|
382
|
+
await getState().refresh_views();
|
|
383
|
+
break;
|
|
384
|
+
case "page":
|
|
385
|
+
await getState().refresh_pages();
|
|
386
|
+
break;
|
|
387
|
+
case "trigger":
|
|
388
|
+
await getState().refresh_triggers();
|
|
389
|
+
break;
|
|
390
|
+
case "config":
|
|
391
|
+
await getState().refresh_config();
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
377
394
|
res.redirect(
|
|
378
395
|
`/registry-editor?etype=${etype}&ename=${encodeURIComponent(
|
|
379
396
|
ename
|
package/routes/tables.js
CHANGED
|
@@ -1018,7 +1018,8 @@ router.get(
|
|
|
1018
1018
|
// Table Data card
|
|
1019
1019
|
const dataCard = div(
|
|
1020
1020
|
{ class: "d-flex text-center" },
|
|
1021
|
-
|
|
1021
|
+
nrows !== null &&
|
|
1022
|
+
div({ class: "mx-auto" }, h4(`${nrows}`), req.__("Rows")),
|
|
1022
1023
|
div(
|
|
1023
1024
|
{ class: "mx-auto" },
|
|
1024
1025
|
a(
|